指定在Linux上启动可执行文件时要使用的动态链接器/加载程序

Ben*_*erg 5 linux linker glibc ld uclibc

我有一个奇怪的Linux系统,其中大部分软件是针对Glibc编译的,而其他一些软件是针对uClibc编译的.

由于Linux是我发布和执行时的标准发行版,因此从glibc调用标准动态链接器(/lib/ld.so.1).

我正在寻找一种在启动任何可执行文件之前指定动态加载程序的方法,所以当我想运行针对uClibc编译的软件时,我可以定义启动机制来使用uClibc动态加载器(/lib/ld-uClibc.so.0 ).

有任何想法吗?

Emp*_*ian 5

我正在寻找一种在启动任何可执行文件之前指定动态加载程序的方法,所以当我想运行针对uClibc编译的软件时

您应该使用linker 参数构建时指定正确的动态加载uClibc--dynamic-linker.例如

gcc -nostdlib -Wl,--dynamic-linker=/lib/ld-uClibc.so.0 \
   /lib/uClibc-crt1.o main.o -L/path/to/uClibc -lc
Run Code Online (Sandbox Code Playgroud)