我试着做一个尽可能可移植的可执行文件。删除了几个依赖项之后,在另一个系统上运行二进制文件时,我遇到了以下情况:
/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 (r
../../lib/prebuild-octeon/libpq.a(thread.o): In function `pqGetpwuid':
thread.c:(.text+0x1c): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
../../lib/prebuild-octeon/libpq.a(ip.o): In function
在此之后,我尝试编译stdlib.so以将其他代码与其链接。不幸的是,stdlib.so本身是一个动态链接的二进制:
# ldd /usr/local/go/pkg/linux_amd64_dynlink/libstd.so
ldd: warning: you do not have execution permission for `/usr/local/go/pkg
/linux_amd64_dynlink/libstd.so'
linux-vdso.so.1 (0x00007ffd611d7000)
libpthread.so.0 => /lib64/lib
我在Ubuntu20.04中使用gcc 10构建了我的C++程序,然后在Ubuntu18.04中运行它,但不幸的是,得到的错误如下:
/opt/aspen/my: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /opt/my/myRenderer.so)
/opt/my/my: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /opt/my/libpython3.8.
我正在用编写一个程序,我打算编译并转移到其他系统执行。理想情况下,它应该没有依赖项,因为目标系统将是linux的新安装。
遗憾的是,我无法绕过libc依赖项,因此我可能不得不在一个拥有我希望目标的最低版本libc的系统上编译可执行文件。我想它应该是向前兼容的。
不过,我对libssl有困难。Debian的默认安装似乎不附带libssl,所以我在运行可执行文件时得到了这个错误:
error while loading shared libraries: libssl.so.1.0.0:
cannot open shared object file: No such file or directo
我有一个为旧版本linux构建的二进制文件,当我将二进制文件放到一个较新的linux中并试图运行它时,它会告诉我们“没有这样的文件或目录”错误。
我搜索了一下,发现这是关于不正确的图书馆链接。我在这个二进制文件上使用了ldd,所显示的输出如下:
./test.exe: /lib/libpthread.so.0: version 'GLIBC_2.1' not found (required by ./test.exe) ./test.exe: /lib/libpthread.so.0: version 'GLIBC_2.0' not found (require
我想检查我的所有依赖项是否都是使用libc++编译的。如果情况并非如此,则返回警告或错误。我的一些依赖项是共享库,有些是静态库。对于共享库,我现在这样做
if(MYLIB_FOUND)
set (MYLIB_LIB "${MYLIB_LIBDIR}/lib${MYLIB_LIBRARIES}.so")
set(MYLIB_FOUND TRUE)
# Check if library has been compiled with -stdlib=libc++
if(${CMAKE_VERSION} VERSION_LESS "3.16.0
我有一个问题,我正在Linux机器上编译我的C++应用程序。然后我将可执行文件移到另一台机器上,但我有一个错误:
./server: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by ./server)
我怎么才能修复它?不需要在发生此错误的第二台机器上重新编译(这是我的客户端机器)
编译命令:
g++ -o server test.cpp server.cpp ... -lboost_system -lboost_thread -std=c++0x
谢谢!