【发布时间】:2012-08-23 18:30:47
【问题描述】:
全部。
我想链接一个调用malloc() 函数的库。
但是,我的目标环境是不同的
malloc() 作为内联函数提供。
我怎样才能让图书馆直接拨打malloc()
我的目标环境的malloc() 例程?
有什么办法可以改变导出的函数名吗?如果是这样的话
我可以先编码my_malloc() 并将其导出为malloc() 并链接
那个图书馆:
#include <my_environment.h> // malloc() is inline function declared there
void my_malloc (void) {
malloc (void);
}
更具体地说,
该库是来自 linux 发行版的库,因此它依赖于 libc。
但我的环境是嵌入式的,没有 libc 库,malloc(), free(), ... 是自定义实现的。有些是内联函数,有些是库函数。
【问题讨论】:
-
您在哪个操作系统上工作?如果在 Linux 上,请了解
LD_PRELOAD! -
我在嵌入式环境中工作。 :-(
-
但它是嵌入式 Linux 目标操作系统吗?目标操作系统是什么?你如何链接你的程序??
-
编辑库二进制文件,将字符序列“malloc”替换为“mylloc”?
-
我手动将我的程序与自定义库链接,如下所示: $ ld -o a.out $(OBJS) -lmy_embedded library
标签: c linker inline static-linking