【发布时间】:2018-04-09 06:46:39
【问题描述】:
我安装了新版本的 Ubuntu 16.04.4 LTS 并且能够使用 cmake 编译我的项目。和 make 和这个 g++-5 命令
g++-5 src/*.cpp -pthread -I extern/sleepy-discord/include -I
extern/poco-1.9.0/Foundation/include -I extern/poco-1.9.0/JSON/include
-I extern/poco-1.9.0/Net/include -I extern/poco-1.9.0/Util/include -L extern/sleepy-discord/lib/linux -L extern/poco-1.9.0/lib/linux
-std=c++11 -o bin/tipbot -lPocoJSON -lPocoUtil -lPocoNet -lPocoFoundation -lsleepy_discord -lcurl -lssl -lcrypto
一切都成功构建,没有错误,但在 Travis CI 上,它给出了数百个链接器错误 Travis.yml:
dist: trusty
sudo: false
language: cpp
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-5
- libcurl4-openssl-dev
- openssl
script:
- ls extern/sleepy-discord/lib/linux
- ls extern/poco-1.9.0/lib/linux
- g++-5 src/*.cpp -pthread -I extern/sleepy-discord/include -I extern/poco-1.9.0/Foundation/include -I extern/poco-1.9.0/JSON/include -I extern/poco-1.9.0/Net/include -I extern/poco-1.9.0/Util/include -L extern/sleepy-discord/lib/linux -L extern/poco-1.9.0/lib/linux -std=c++11 -o bin/tipbot -lPocoJSON -lPocoUtil -lPocoNet -lPocoFoundation -lsleepy_discord -lcurl -lssl -lcrypto
这是错误,它显然找到了 libPocoJSON.a 文件,但我不明白为什么如果它找到了 .a 文件并找到了 C++11 模板库,它为什么会说“未定义的引用”。
extern/poco-1.9.0/lib/linux/libPocoJSON.a(ParserImpl.o):在函数中
Poco::JSON::ParserImpl::stripComments(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) [clone .part.23]': ParserImpl.cpp:(.text+0x91): undefined reference tostd::__cxx11::basic_string, std::allocator >::_M_erase(unsigned long, unsigned long)' extern/poco-1.9.0/lib/linux/libPocoJSON.a(ParserImpl.o):在函数中void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) [clone .isra.68]': ParserImpl.cpp:(.text+0x1f9): undefined reference tostd::__cxx11::basic_string, std::allocator >::_M_create(unsigned long&, unsigned long)' extern/poco-1.9.0/lib/linux/libPocoJSON.a(ParserImpl.o):在函数中 `Poco::JSON::ParserImpl::handle()':
回购: https://github.com/Brandantl/IntenseCoin-TipBot
也可以用cmake .;make编译
【问题讨论】:
标签: c++11 linker travis-ci poco-libraries