编译的静态可执行文件返回"没有这样的文件或目录"

时间:2015-02-10 22:33:13

标签: c++ gcc cmake ld

我正在尝试静态编译我的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

发生了什么事?

1 个答案:

答案 0 :(得分:0)

答案:删除-static。该选项仅强制静态库(没有共享库),因为我想在两个共享库中链接它使二进制文件无法使用。

此外,我甚至认为-static对可执行文件无效。