Mos*_*bin 0 c++ ubuntu boost cmake
我有一个基于Linux的应用程序,在Ubuntu 12.04 LTS下运行,编译,链接和运行没有问题.
我最近将我的Ubuntu升级到14.04 LTS,并且遇到了编译和链接应用程序的问题.
通过在两个文件中手动修改Boost 1.48的本地副本来解决编译问题(包括/ boost/config/stdlib/libstdcpp3.h pp和include/boost/thread/xtime.hpp).此时应用程序编译成功.
我遇到的问题是链接失败并显示错误消息:
c++: error: unrecognized command line option ‘-Wl’
Run Code Online (Sandbox Code Playgroud)
我使用CMake在多个平台上编译应用程序.这是CMake生成的链接描述文件.请注意,/ usr/bin/c ++现在无法识别"-Wl"选项:
/usr/bin/c++
-fno-stack-protector
-g
-Wl
CMakeFiles/Project.dir/main.cpp.o
CMakeFiles/Project.dir/TestCallback.cpp.o
CMakeFiles/Project.dir/utils.cpp.o
CMakeFiles/Project.dir/Request1.cpp.o
CMakeFiles/Project.dir/Response1.cpp.o
CMakeFiles/Project.dir/TextChatRequest.cpp.o
CMakeFiles/Project.dir/TextChatResponse.cpp.o
-o
/home/user/private/Project/Project_Release_1_2_Codename/Build/bin/Debug/Project
-L/home/user/Libraries/Ubuntu32_12.04/boost_1.48/lib
-L/home/user/Libraries/Ubuntu32_12.04/SqlLite_3.6/lib
-L/home/user/Libraries/Ubuntu32_12.04/taglib_1.7/lib
-L/home/user/Libraries/Ubuntu32_12.04/JSON_1.0/lib/Debug
-L/home/user/private/Project/Project_Release_1_2_Codename/Build/../lib/libUbuntu32/Debug
-rdynamic
/home/user/private/Project/Project_Release_1_2_Codename/lib/libUbuntu32/Debug/libAPI.a
/home/user/private/Project/Project_Release_1_2_Codename/lib/libUbuntu32/Debug/libInternals.a
-lboost_thread
-lboost_system
-lboost_filesystem
-lboost_program_options
-ltaglib
-lJSON
-lpthread
-Wl,-Bstatic
-lsqlite3
-Wl,-Bdynamic
-ldl
-Wl,-rpath,/home/user/Libraries/Ubuntu32_12.04/boost_1.48/lib:/home/user/Libraries/Ubuntu32_12.04/SqlLite_3.6/lib:/home/user/Libraries/Ubuntu32_12.04/taglib_1.7/lib:/home/user/Libraries/Ubuntu32_12.04/JSON_1.0/lib/Debug:/home/user/private/Project/Project_Release_1_2_Codename/Build/../lib/libUbuntu32/Debug
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的软件的版本信息:
Ubuntu:
14.04.1 LTS (trusty)
c++ compiler/linker:
(Ubuntu 4.8.2-19ubuntu1) 4.8.2
CMake:
Version 2.8.12.2
Run Code Online (Sandbox Code Playgroud)
为什么链接器不能识别"-Wl"命令?我升级到14.04 LTS是否修改了链接器软件库?如何备份和链接我的应用程序?
在命令的第4行,您-Wl没有任何实际的链接器选项.
https://gcc.gnu.org/gcc-4.7/porting_to.html
在此页面顶部右侧是以下内容:
早期版本没有对gcc/g ++/gfortran等命令行中完全无效的选项发出警告或错误,如果没有编译,但只执行了链接.这已不再是这种情况.例如,
gcc -Wl -o foo foo.o -mflat_namespace
现在产生以下错误
错误:无法识别的命令行选项'-Wl'
错误:无法识别的命令行选项'-mflat_namespace'
无效选项需要从命令行中删除或替换为有效的选项.
12.04 LTS打包GCC 4.6,你现在已经跳到4.8并且-Wl它本身不再是一个有效的选项(或者说它从来没有,GCC现在更加迂腐).
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |