有一动态编译工具eeupdate64e,将工具拷贝到环境上无法使用,报-/bin/sh:eeupdate64e not found
问题。
确定已经给工具赋予了可执行权限,说明不是权限问题。
查看工具依赖的动态库:
/ # ldd eeupdate64e
linux-vdso.so.1 (0x00007ffc38ff1000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f2e7f429000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2e7f20a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2e7ee19000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2e800c5000)
/ # readelf -d eeupdate64e
Dynamic section at offset 0x30e9e0 contains 30 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [librt.so.1]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000c (INIT) 0x16080
0x000000000000000d (FINI) 0x223564
0x0000000000000019 (INIT_ARRAY) 0x50e668
0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)
0x000000000000001a (FINI_ARRAY) 0x50e670
.......
.......
使用ldd eeupdate64e
或readelf -d eeupdate64e
命令均可查看工具eeupdate64e依赖的动态库。
结果显示,工具依赖librt.so.1
libpthread.so.0
libc.so.6
三个动态库,从编译链中拷贝相应的动态库到/lib目录下即可。
😄 😄 😄
背景最近在项目中加载内核模块和动态库时,都遇到加载失败情况。后发现都是依赖关系问题,在此记录此类问题的解决方法。查看内核模块依赖关系使用insmod加载内核模块时,报以下错误:/ # insmod a.koinsmod: ERROR: could not insert module ./a.ko: Unknown symbol in module环境缺少模块依赖,使用modinfo查看依赖:/ # modinfo ./a.infofilename: /home/admin/./
Helios 内核 — 用于 JavaScript 的 include()
Helios Kernel 是一个同构的 JavaScript 模块加载器和依赖项管理器。 在同构下,意味着基于 Helios 内核的应用程序或库可以在基于浏览器的环境和运行,无需任何类型的转换。 在撰写本文时,这是唯一一个专注于真正同构的模块加载器。
Helios Kernel 跟踪依赖图,根据应用程序不同独立部分的需要,在运行时动态加载和卸载相应的模块。 当其他模块仍在下载或解析时开始初始化准备好用于此的模块,并处理一些棘手的问题,例如循环依赖或损坏的代码(报告问题,但仍使应用程序保持活动状态),这是足够聪明的。 但是 Helios 内核的主要特性是
Helios Kernel 提供了必要的功能,旨在使依赖项管理变得简单明了。 模块和依赖声明的语法以经典的包含样式实现:
// list of de
(1)找不到程序所依赖的Qt库 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found (required by ./运行程序名)
(2)Could not Load the Qt platform plugin "xcb" in "" even though it was found
直接提示段错误即segmentation fault,或者Illegal instruction (core dumped) 非法指令
自己在openwrt/package/utils/目录下新添加了一个程序包,在编译的时候报错,
...is missing dependencies for the following libraries:
libpthread.so.0.
这需要在该程序包的顶层makefile中添加红色字体部分。
define Package/rssi_client
SECTION:=utils
最近项目用到了opencv,在测试环境编译后生成了so文件,在测试环境运行正常后准备在预发环境进行上线前的测试
但是System.loadLibrary(Core.NATIVE_LIBRARY_NAME)一直加载不成功,也没有报错
更改捕获Exception为Throwable,发现libopencv_java330.so的某个依赖文件没找到或者不存在
安装对应的依赖so文件后再次部署,运行
最近在做UOS的客户端开发。我的开发环境是UOS 1022的,打了一个deb给客户。但是客户的环境是UOS 1021。
根据客户的反馈,这个包安装后打不开。进一步了解后,程序启动后会出现segmentation fault (段错误)。
这个安装包在UOS 1022是可以正常使用的,为什么在UOS 1021上就异常了呢。
我将程序的
依赖库,用二分法删除,发现只要删除
依赖目录中的
libpthread.so ,程序就可以正常启动了。
我对比了UOS 1022和UOS 1021 的li
在交叉编译一个项目,链接了uClibc库中的libpthread.a,出现了undefined
reference to `_Unwind_Resume',符号缺失问题。添加-lgcc_eh这个库就能够解决。
pgf77 -o ../gamess.01.x -Bstatic -i8 -i8storage -fastsse -Mipa=fast,safe -Mprof=func ga
(1) $ ldd /bin/grep
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7eca000)
/lib/ld-linux.so.2 (0xb801e000)
(2) $ LD_TRACE_LOADED_OBJECTS=...
gn编译中,因为涉及多平台的编译,windows、cortex-a9、cortex-a7-poky在生成一个动态库的时候都没问题,
但是当在x86-64平台编译时,却一直提示:
hidden symbol `pthread_atfork' in /opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/../aarch64-linux-gnu/libc/usr/lib/aarch64-linux-gnu/libpthread_nonshared.a(
depends.exe (老版本vs带此工具) macox:
查看依赖的动态库
otool -L test 可以查看 @rpath路径 LC_RPATH , 用这个路径替换动态库的@rpath
otool -l test linux:
ldd -v test