08-在主程序中访问符号
42.1.6 在主程序中访问符号
假设使用dlopen()动态加载了一个共享库,然后使用dlsym()获取了共享库中x()函数的地址,接着调用x()。如果在x()中调用了函数y(),那么通常会在程序加载的其中一个共享库中搜索y()。
有些时候需要让x()调用主程序中的y()实现(类似于回调机制)。为了达到这个目的就必须要使主程序中的符号(全局作用域)对动态链接器可用,即在链接程序时使用− −export−dynamic链接器选项。
或者可以编写下面这个等价的命令。
使用这些选项中的一个就能够允许动态加载的库访问主程序中的全局符号。
gcc –rdynamic选项和gcc –Wl、–E选项的含义,以及–Wl、− −export–dynamic是一样的。