簡體   English   中英

在64位Ubuntu中構建一個32位應用程序

[英]Building a 32-bit app in 64-bit Ubuntu

經過幾個小時的谷歌搜索,我決定放棄並問你專家。 我正試圖在我的64 Ubuntu 11.10中構建一個32位應用程序(xgap,如果有興趣的話)。 我在makefile中添加了CFLAGS = -m32LDFLAGS = -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-libsmutilib支持 我想我只需要強制鏈接器生成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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM