我正在尝试使用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