我正在嘗試使用LLVM編譯c程序,並且遇到了一些包含靜態庫的問題。我已經使用LLVM成功編譯了這些靜態庫,例如,libogg.a也存在,就像ogg.l.bc一樣。不包含在生成的LLVM可執行文件中的靜態庫
但是,當我嘗試構建最終的程序時,它不包含靜態ogg庫。我已經試過各種編譯器選項最顯着的是:
gcc oggvorbis.c -O3 -Wall -I$OV_DIR/include -l$OV_DIR/lib/libogg.a -l$OV_DIR/lib/libvorbis.a -o test.exe
這將導致下面的輸出(簡稱爲簡潔起見目錄):
$OV_DIR/include/vorbis/vorbisfile.h:75: warning: ‘OV_CALLBACKS_DEFAULT’ defined but not used
$OV_DIR/include/vorbis/vorbisfile.h:82: warning: ‘OV_CALLBACKS_NOCLOSE’ defined but not used
$OV_DIR/include/vorbis/vorbisfile.h:89: warning: ‘OV_CALLBACKS_STREAMONLY’ defined but not used
$OV_DIR/include/vorbis/vorbisfile.h:96: warning: ‘OV_CALLBACKS_STREAMONLY_NOCLOSE’ defined but not used
llvm-ld: warning: Cannot find library '$OV_DIR/lib/ogg.l.bc'
llvm-ld: warning: Cannot find library '$OV_DIR/lib/vorbis.l.bc'
WARNING: While resolving call to function 'main' arguments were dropped!
我覺得這是令人費解,因爲$ OV_DIR/lib中/ ogg.l.bc確實存在,就像vorbis.l.bc一樣,它們都是可讀的(就像它們包含的目錄一樣)。
有沒有人有任何想法我做錯了什麼?
感謝,
馬特
感謝您的答覆。您可以使用帶-l選項的路徑。這迫使編譯器使用指定的文件而不是擴展-logg。這是因爲編譯器比靜態庫更喜歡動態共享庫。 無論哪種方式,它都不能解釋即使它們存在也無法找到字節碼l.bc文件的事實! – 2010-04-06 09:56:00