2012-11-01 51 views
2

我想要編譯SDL 2.0 OS X 10.6,但我已經得到這個消息:libiconv的問題,10.6

Undefined symbols: 
    "_libiconv_open", referenced from: 
     _SDL_iconv_string in SDL_iconv.o 
     _SDL_iconv_string in SDL_iconv.o 
    "_libiconv", referenced from: 
     _SDL_iconv in SDL_iconv.o 
     _SDL_iconv_string in SDL_iconv.o 
    "_libiconv_close", referenced from: 
     _SDL_iconv_string in SDL_iconv.o 
     _SDL_iconv_string in SDL_iconv.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

我已經在讀的問題在https://github.com/mxcl/homebrew/issues/894How to replace MacPort's libiconv with Mac's default 64-bit version?,看看它們中的幫助。我卸載了MacPorts的所有內容,因爲這兩個似乎表明這個問題與同一個庫的多個版本有關(它安裝的libiconv有太多的依賴關係來手動卸載它們,我不再需要它們),但我仍然得到相同的錯誤。有任何想法嗎?

+1

您是如何編譯的?用Xcode?一個makefile?在命令行上調用鏈接器?在任何情況下,您都需要添加'-liconv'來鏈接iconv庫以及可能的'-L/path/to/libiconv/folder',以將其添加到鏈接程序搜索路徑中。 –

+0

我正在用makefile編譯。看起來它已經在使用-liconv進行鏈接。我會嘗試添加包含libiconv的文件夾的路徑,看看是否改變了任何東西。 – Ryan

回答

4

因此,原來卸載MacPorts的副本後,我仍然有libiconv的2份,我的計算機是不同的。一個在/ usr/lib中,另一個在/ usr/local/lib中。使用/ usr/lib中的編譯器生成上面的錯誤,但是將-L/usr/local/lib添加到Makefile中的EXTRA_LDFLAGS變量中。

2

我發現了一個簡單的解決方案。配置SDL源時只需添加2個參數:

./configure CPPFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib'