我正在尝试静态编译我的c ++可执行文件。一切都很好,但我正试图静态编译。
这是链接线:
/usr/bin/c++ -O3 -static -static-libgcc -static-libstdc++ main.cpp.o xor.cpp.o other.cpp.o -o myprogram -rdynamic -Wl,-Bstatic -lssl -lcrypto -lprotobuf-lite /usr/local/lib/libboost_filesystem.a /usr/local/lib/libboost_system.a /usr/local/lib/libboost_program_options.a /usr/local/lib/libboost_regex.a /usr/local/lib/libboost_thread.a /usr/local/lib/libboost_chrono.a -lgmodule-2.0 -lglib-2.0 -Wl,-Bdynamic -lpthread -ldl
编译中没有错误。当我尝试执行程序时:
./myprogram
我明白了:
bash: No such file or directory: ./myprogram
ls -la ./myprogram
返回:
-rwxrwxr-x 1 user user 2746921 Feb 10 14:26 ./myprogram
发生了什么事?
答案 0 :(得分:0)
答案:删除-static
。该选项仅强制静态库(没有共享库),因为我想在两个共享库中链接它使二进制文件无法使用。
此外,我甚至认为-static
对可执行文件无效。