使用標誌「-Wl, - no-undefined -Wl, - no-allow-shlib -undefined」與GCC導致特拉維斯CI形象以下編譯錯誤,但不是我的機器上(都是Ubuntu的12.04 64位):將錯誤鏈接到「-Wl, - no-undefined -Wl, - no-allow-shlib-undefined」
Linking CXX shared library libmocap.so
cd /tmp/_travis/build/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/mocap.dir/link.txt --verbose=1
/usr/bin/g++ -fPIC --coverage -Werror -pedantic -Wno-long-long -Wall -Wextra -Wcast-align -Wcast-qual -Wformat -Wwrite-strings -Wconversion -fvisibility=hidden -Wl,--no-undefined -Wl,--no-allow-shlib-undefined -Wl,--as-needed -shared -Wl,-soname,libmocap.so.0.0.0 -o libmocap.so.UNKNOWN CMakeFiles/mocap.dir/abstract-marker.cc.o CMakeFiles/mocap.dir/abstract-virtual-marker.cc.o CMakeFiles/mocap.dir/color.cc.o CMakeFiles/mocap.dir/link.cc.o CMakeFiles/mocap.dir/marker-set-factory.cc.o CMakeFiles/mocap.dir/marker-set.cc.o CMakeFiles/mocap.dir/marker-trajectory-factory.cc.o CMakeFiles/mocap.dir/marker-trajectory.cc.o CMakeFiles/mocap.dir/marker.cc.o CMakeFiles/mocap.dir/mars-marker-set-factory.cc.o CMakeFiles/mocap.dir/math.cc.o CMakeFiles/mocap.dir/pose.cc.o CMakeFiles/mocap.dir/segment.cc.o CMakeFiles/mocap.dir/string.cc.o CMakeFiles/mocap.dir/trc-marker-trajectory-factory.cc.o CMakeFiles/mocap.dir/virtual-marker-one-point-measured.cc.o CMakeFiles/mocap.dir/virtual-marker-relative-to-bone.cc.o CMakeFiles/mocap.dir/virtual-marker-three-points-measured.cc.o CMakeFiles/mocap.dir/virtual-marker-three-points-ratio.cc.o CMakeFiles/mocap.dir/virtual-marker-two-points-measured.cc.o CMakeFiles/mocap.dir/virtual-marker-two-points-ratio.cc.o
/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `[email protected]_PRIVATE'
/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `[email protected]_PRIVATE'
/usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so: undefined reference to `[email protected]_2.3'
/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `[email protected]_PRIVATE'
/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `[email protected]_PRIVATE'
collect2: ld returned 1 exit status
make[2]: *** [src/libmocap.so.UNKNOWN] Error 1
奇怪的是,這並不在我的機器上出現,因此是有點難以重現。 啓用這些標誌時,鏈接到libc和libstdC++的正確方法是什麼?
(正如你可能從輸出猜,我用CMake的生成編譯命令)
在這種情況下是否有用於「--no-allow-shlib-undefined」標誌?根據我的理解,只要你是libC++,你將無法編譯這個標誌,對吧? –