相关疑难解决方法(0)

什么是LD_PRELOAD技巧?

我最近在proggit看到了它的引用,并且(截至目前)它没有被解释.

我怀疑可能是它,但我不确定.

c linux environment-variables

321
推荐指数
6
解决办法
29万
查看次数

如何从共享对象中删除符号?

使用GCC,如何在创建共享对象后从共享对象中删除符号?如果我在C中有三个文件操纵符号,foo()如:

// a.c
int foo() { return 0xdead; }
int baz() { return 1; }
Run Code Online (Sandbox Code Playgroud)

// b.c
int foo() { return 0xbeef; }
int bar() { return 0; }
Run Code Online (Sandbox Code Playgroud)

// c.c
#include "stdio.h"
extern int foo();
extern int bar();
extern int baz();
int main() { printf("0x%x, 0x%x, 0x%x\n",foo(),bar(),baz()); return 0; }
Run Code Online (Sandbox Code Playgroud)

然后我编译并运行如下:

% gcc a.c --shared -fPIC -o a.so
% gcc b.c --shared -fPIC -o b.so
% setenv LD_LIBRARY_PATH . # export LD_LIBRARY_PATH=. for bash systems …
Run Code Online (Sandbox Code Playgroud)

c linux gcc shared-libraries

10
推荐指数
1
解决办法
9457
查看次数

标签 统计

c ×2

linux ×2

environment-variables ×1

gcc ×1

shared-libraries ×1