簡體   English   中英

是什么決定了在64位機器上構建的32位庫是否需要x86_64或i386依賴?

[英]What determines if a 32-bit library built on a 64-bit machine needs x86_64 or i386 dependencies?

我正在更新一些舊的C ++項目,這是第一次在64位Linux機器上構建,我沒有太多的Linux經驗。 我需要將所有內容構建為32位二進制文​​件,因此我在編譯器和鏈接器標志中使用-m32構建所有內容。 我發現,當鏈接到它們的依賴項時,有些必須與i386共享對象鏈接,有些必須與x86_64共享對象鏈接。 如果我只在鏈接路徑中包含錯誤的文件夾( -L/path/to/wrong/folder ),它說

/usr/bin/ld: skipping incompatible xxx.so when searching for -lxxx

我已經明白這意味着該架構與我正在嘗試構建的架構不匹配

兩個這樣的不同項目的makefile幾乎完全相同,所以看起來我在做那些明顯錯誤的東西,並且-m32出現在終端中對gccg++的調用中。 什么可能導致這種差異? 我應該擔心,還是典型的發生?

如果需要更多信息,請告訴我們; 我不太確定,由於缺乏Linux和gcc的經驗,所以提前道歉。

謝謝@Wyzard和@duskwuff的提示。 我確實能夠通過在我的.o文件上使用file找到我的問題。 這只是一個愚蠢的錯誤; 我無意中將我對其中一個項目的make文件所做的更改還原,其中包括添加-m32標志。 我想我誤解了“x86_64”庫的用途,這使我感到困惑(我認為這意味着“64位機器的32位進程”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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