已编译的静态可执行文件 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
对可执行文件有效。
我正在尝试静态编译我的 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
对可执行文件有效。