已编译的静态可执行文件 returns "no such file or directory"

Compiled static executable returns "no such file or directory"

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

-rwxrwxr-x 1 user user 2746921 Feb 10 14:26 ./myprogram

这是怎么回事?

答案:移除-static。该选项仅强制静态库(无共享库),正如我想在两个共享库中 link 它使二进制文件不可用。

而且我什至不认为 -static 对可执行文件有效。