我正在編寫一個具有多個子目錄的應用程序。我創建了一個Makefile結構,以便子目錄編譯文件並執行「ar rvs」和「ranlib libxxx.a」以創建歸檔到父目錄以進行鏈接。OS X上的Gcc:架構x86_64的未定義符號
但是「ld」命令正在運行到以下問題。
ld: warning: ignoring file ./libxxx.a, file was built for archive which is not
the architecture being linked (x86_64):
./libxxx.a Undefined symbols for architecture x86_64:
我使用的是Mac OS X的gcc 10.10.1
我讀了這麼多的帖子。我想「GCC -arch I386」,然後我遇到了同樣的錯誤了i386
Undefined symbols for architecture i386:
我安裝GCC-4.9.2,並使用它,而不是默認的gcc,沒有運氣嘗試。我嘗試使用x86_64-apple-darwin14.0.0-g ++ - 4.9.2,這也沒有幫助。
謝謝你的迴應。我試過「CC = gcc -m64」,我也用gcc來運行ld命令。但結果是一樣的。我只試過-m32選項,看看它是否有效,如果我使它一致,但沒有其他原因。 – newprogrammer
除非我們看到一個能夠再現問題的最小化生成文件,否則沒有人可以爲您提供更多幫助。閱讀如何創建一個MCVE([如何創建最小,完整和可驗證示例?](http://stackoverflow.com/help/mcve))或SSCCE([Short,Self-Contained,Correct Example] (http://sscce.org/)) - 同一個想法的兩個名稱和鏈接。你的MCVE代碼應該可能是庫的一個最小源文件(和頭文件)('void libfunc(void){printf(「%s叫\ n」,__func__);}',並且你的主程序調用了庫函數,加上一兩個makefile文件,具體取決於事情的佈局。 –
謝謝,請看看它。 – newprogrammer