使用 C++ 编译并获得 "ready to go" 可执行文件

Compiling with c++ and getting "ready to go" executable

是否可以使用 g++ 编译程序,以便共享库等 "included" 与可执行文件一起使用?

我有一个要编译的 C++ 程序,运行 在另一个位置,我缺少一些库并且没有安装权限。

我找不到答案的主要原因可能是我不知道如何调用它..

不,这不可能。

要么 link 静态地(使用 -static)以便它不使用任何共享库,要么将共享库与可执行文件一起复制到其他位置。

由于共享库不在动态加载程序的常用搜索路径中,您需要确保可以找到它们,方法是在 运行 程序时设置 LD_LIBRARY_PATH 环境变量,或者在构建可执行文件时在可执行文件中设置 RPATH。

(假设您使用的是 GNU linker ...)在可执行文件 link 中使用 '-Wl,-rpath,$ORIGIN' 设置 RPATH(引号很重要,停止 $ORIGIN 被 shell 扩展)。这意味着加载程序将在与可执行文件本身相同的目录中查找共享库。

有关详细信息,请参阅 https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths and https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic