作为 C++ 的新手,我基本上有一个关于 g++ 编译器的问题,尤其是库的包含。考虑以下生成文件:
CPPFLAGS= -I libraries/boost_1_43_0-bin/include/ -I libraries/jpeg-8b-bin/include/
LDLIBS= libraries/jpeg-8b-bin/lib/libjpeg.a
# LDLIBS= -L libraries/jpeg-8b-bin/lib -llibjpeg
all: main
main: main.o
c++ -o main main.o $(LDLIBS)
main.o: main.cpp
c++ $(CPPFLAGS) -c main.cpp
clean:
rm -rf *.o main
如您所见,我两次声明了 LDLIBS 变量。如果我使用上面的 makefile,我的代码正在编译和工作。但是,如果我停用第一个 LDLIBS 条目并激活第二个,我会得到ld: library not found for -llibjpeg
。我假设我libjpeg.a
的只是没有被调用libjpeg
,但有一些不同的名字。
有没有办法找出给定“库文件”的名称libsomething.a
或libsomething.dyn
?
好的,感谢您的所有回答,它现在正在工作。还有一个小问题:简单地省略“lib”是一种惯例,还是有一种标准化的方法来找出名称?