[英]Building 32-bit FCGI++ binaries in 64-bit environment in Ubuntu 13
[英]Building a 32-bit app in 64-bit Ubuntu
經過幾個小時的谷歌搜索,我決定放棄並問你專家。 我正試圖在我的64 Ubuntu 11.10中構建一個32位應用程序(xgap,如果有興趣的話)。 我在makefile中添加了CFLAGS = -m32和LDFLAGS = -L / usr / lib32 。 這些對象內置為32位精細。 最后一步是將X窗口的所有對象和庫鏈接到這個可執行文件--- xgap中。 不知怎的,它一直給我這個錯誤:
gcc -o xgap xcmds.o utils.o gapgraph.o gaptext.o pty.o popdial.o xgap.o selfile.o -L/usr/lib32 -lXaw -lXmu -lXt -lXext -lX11 -lSM -lICE
/usr/bin/ld: skipping incompatible /usr/lib32/libXmu.so when searching for -lXmu
...
/usr/bin/ld: i386 architecture of input file `xcmds.o' is incompatible with i386:x86-64 output
...
我已經安裝了ia32-libs和mutilib支持 。 我想我只需要強制鏈接器生成i386輸出。 我試圖在我的gcc命令中放入兩個ld標志,如上所示: -melf_i386和-oformat elf32-i386 。 但是,gcc不再搜索/ usr / lib32中的32位庫。 我想知道我是否需要按固定順序放置這些標志?
感謝您的任何想法和幫助!
編輯 :當我在我的上一個gcc命令(我相信的鏈接階段)中添加-m32標志時,即使我有-L / usr / lib32標志,gcc也不再搜索/ usr / lib32(真的奇怪...)並生成以下錯誤:
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../libXaw.so when searching for -lXaw
/usr/bin/ld: skipping incompatible /usr/lib/libXaw.so when searching for -lXaw
/usr/bin/ld: cannot find -lXaw
collect2: ld returned 1 exit status
任何人都知道為什么會這樣? 我正在使用自動工具進行配置和制作。 我非常擅長修改這些腳本文件。
您還需要使用與-m32
鏈接。
gcc -m32 -o xgap xcmds.o utils.o gapgraph.o gaptext.o pty.o popdial.o xgap.o selfile.o -L/usr/lib32 -lXaw -lXmu -lXt -lXext -lX11 -lSM -lICE
考慮到所有事情,我認為你應該能夠在使用-m32
時刪除-L/usr/lib32
。
我解決了這個問題。 我認為gcc期待一個靜態庫存檔。 我使用了http://ubuntuforums.org/showthread.php?t=474790中的getlibs腳本來下載鏈接所需的所有.a檔案。 然后gcc工作了。 我認為gcc在/ usr / lib32目錄中搜索但沒有找到.a檔案,所以繼續搜索標准目錄/ usr / lib ,在那里找到不兼容的* .so文件。
但問題是: / usr / lib32 /中的* .so文件來自包ia32-libs真的沒有鏈接所需的庫嗎? / usr / lib32 /中的那些文件用於什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.