我试着做一个尽可能可移植的可执行文件。删除了几个依赖项之后,在另一个系统上运行二进制文件时,我遇到了以下情况:
/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
在Linux中,下载了一个程序源代码,并希望将其静态链接。我有一个很大的Makefile,我
./configure
make
编译。理解它有点太笼统了,但我如何才能使二进制文件静态链接呢?
编辑:这样做的原因是希望确保二进制文件不会有依赖关系(或者至少是尽可能少),这样就可以在任何基于Linux的计算机上运行,即使是没有Internet连接的计算机,也可以是未更新的Linux。
我刚开始使用Eclipse并开发一个将在Linux上运行的应用程序(在ARM处理器上)。我想使用OpenCV库(.so文件)。我的应用程序由链接到多个静态库的可执行文件组成。这个链接是在IDE设置(ARM linux g++链接器设置)中配置的。我需要在这些静态库中使用openCV。openCV库包括在中安装的.so文件。是否可以从我的静态库中链接到这些库?我不知道该怎么安排。显然,静态库项目中没有g++链接器设置。谢谢你的帮助。
我通过JNI在我的Android应用程序中使用OpenCV。libopencv_java.so太大了,大约有7M。显然,我只需要几个库。我检查了OpenCV4Android中的库,发现了一些静态库,比如libopencv_core.a。这是我用Android.mk编写的新代码,其中包含了必要的OpenCV库。我还介绍了libopencv_core.a、libopencv_highgui.a、libopencv_imgproc.a和一些第三方库,它们是: liblibjasper.a、liblibjpeg.a、liblibpng.a、liblibtiff.a。
include $(CLEAR_V
我正在尝试使用Yocto SDK构建一个应用程序。编译运行良好,但当涉及到链接时,会出现以下链接器错误: ...
/opt/mydistro/1.0.0/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/8.3.0/real-ld: /opt/mydistro/1.0.0/sysroots/cortexa9t2hf-neon-poky-linux-gnueabi/usr/lib/libc.a(getcontext.o): in function `getcon
我正在尝试使用sixense的专有sdk (游戏控制器的驱动程序)。看起来它们静态地链接到了boost::thread。我的应用程序和它的一些依赖项也使用了boost::thread,并且我得到了一个段错误。
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7bd1bb5 in boost::thread::start_thread() () from /usr/lib/libboost_thread.so.1.42.0
(gdb) bt
#0 0x00007ffff7bd1bb5 in boost::threa
我已经成功地在Linux x86_x64上构建了几个32位的静态和共享库,现在我试图将它们链接到一个可执行文件,并得到以下错误:
/usr/bin/ld: foo.so: __moddi3: invalid version 21 (max 0)
foo.so: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
其中foo.so是我构建的共享库之一。
__moddi3函数是的一部分。它的签署是:
— Runtime Function: long __moddi3 (long a, long b)
在此之后,我尝试编译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