以下编译/链接传递
$ g++ --std=c++11 ../gen-cpp/SharedService.cpp ../gen-cpp/shared_types.cpp ../gen-cpp/tutorial_types.cpp ../gen-cpp/Calculator.cpp ./client.cpp -lthrift
$ ldd ./a.out
linux-vdso.so.1 => (0x00007ffd8830c000)
libthrift-0.9.2.so => not found
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f3298d41000)
libm.so.6 => /lib64/libm.so.6 (0x00007f3298a3f000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3298829000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3298467000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f329824b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3299053000)
从上面,我看到只找不到一个库(libthrift)。但是,当我尝试静态链接库时,我收到错误消息,找不到某些库。我发现很奇怪的是,提到的库是实际找到的库(上面的ldd输出),没有提到libthrift。
$ g++ -static --std=c++11 ../gen-cpp/SharedService.cpp ../gen-cpp/shared_types.cpp ../gen-cpp/tutorial_types.cpp ../gen-cpp/Calculator.cpp ./client.cpp -lthrift
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
非常感谢任何见解。
谢谢你, 艾哈迈德。