相关疑难解决方法(0)

使用-static-libgcc -static-libstdc ++进行编译仍会导致对libc.so的动态依赖

我正在尝试制作尽可能便携的可执行文件.删除一些依赖项后,我在另一个系统上运行二进制文件时遇到以下情况:

/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.15' not found (required by foob)
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by foob)
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by foob)
Run Code Online (Sandbox Code Playgroud)

我更喜欢我的二进制文件不要求用户升级他们的libc版本,所以我也想删除这个依赖项.

生成上述二进制文件的链接器标志已包含在内-static-libgcc -static-libstdc++.为什么二进制文件仍然需要共享的libc.so.6

我也尝试添加-static标志,但是当我尝试运行二进制文件时,结果非常奇怪:

$ ls -l foob
-rwxr-xr-x 1 claudiu claudiu 13278191 Oct 10 13:03 foob
$ ./foob
bash: ./foob: No such file or directory
Run Code Online (Sandbox Code Playgroud)

该怎么办?

编辑:

$ file foob
foob: ELF 64-bit LSB  executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc glibc static-linking

23
推荐指数
1
解决办法
3万
查看次数

标签 统计

c ×1

c++ ×1

gcc ×1

glibc ×1

static-linking ×1