在生成文件中链接库
Linking library in makefile
我在简单的制作文件中链接库 boost 和 curl 时遇到问题。当我使用单个命令时:
g++ -I /usr/lib/boost/include -L /usr/lib/boost/lib website.cpp website.h main.cpp data.cpp data.h -lboost_regex -lcurl
一切都很好,但是当我使用makefile时
a.out: website.o data.o main.o
g++ -L /usr/lib/boost/lib -lboost_regex website.o data.o main.o -o a.out -lcurl
data.o: data.cpp data.h
g++ -c data.cpp -o data.o
website.o: website.cpp website.h
g++ -I /usr/lib/boost/include -c website.cpp -o website.o
main.o: main.cpp
g++ -c main.cpp -o main.o
我有很多错误:
g++ -c main.cpp -o main.o
g++ -L /usr/lib/boost/lib -lboost_regex website.o data.o main.o -o a.out -lcurl
website.o: In function boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
website.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)]+0x22): undefined reference to `boost::basic_
我在网站中使用 boost 和 curl.cpp(当然头条新闻在 website.h 中)。
问题是-lboost_regex
在编译器命令中被放置在.o
之前,这与在末尾-lboost_regex
的单个命令不同。
改变:
g++ -L/usr/lib/boost/lib -lboost_regex website.o data.o main.o -o a.out -lcurl
自:
g++ -L/usr/lib/boost/lib website.o data.o main.o -o a.out -lcurl -lboost_regex
请参阅 GCC 链接选项,了解订单为何重要。
相关文章:
- 无法链接文件系统库C++
- 如何在C++中链接 .a 文件
- 在为 Java 编译动态链接文件时,我应该选择哪些 g++ 参数
- Makefile 将在文件更改时链接文件,但不会重新编译更改的源文件
- CMake 从子目录和父目录链接文件
- 如何将GCC链接器固定地址添加到链接文件中
- 在GCC中链接.h文件
- 使用GDB中的多个链接文件进行调试
- visualstudio2010表达了不同项目中的链接文件
- 编译器是否会优化未使用的链接文件
- 尝试取消链接文件时编译 C++ 时出错
- 链接文件错误,VS 2015中的错误LNK2005
- 用C++中的链接文件编译错误
- Makefile未链接.o文件
- 如何链接.h文件中声明为extern的函数,以创建.dll文件
- 通过makefiles链接文件
- 未定义的引用错误,即使在链接c文件之后
- 多个链接c++文件
- 使用CMakeLists.txt链接c++文件
- 在c++中链接文件