Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何与旧版本的GLIBC链接?_C++_C_Static Linking - Fatal编程技术网

C++ 如何与旧版本的GLIBC链接?

C++ 如何与旧版本的GLIBC链接?,c++,c,static-linking,C++,C,Static Linking,我正在一台装有GLIBC_2.27(Ubuntu 18.04)的机器上编译一个共享库,该库将加载到装有GLIBC_2.17(Centos 7)的机器上。实际上,其他所有库都可以静态链接到我的共享库中,但glibc不能。因此,我用readelf扫描了库中对GLIBC_2.27的引用,并重写了与之相关的所有函数。除了glob@GLIBC_2.27。我没有显式调用glob()。如何找到名为glob()的函数或库?我不知道这是否有效,但如果您在gdb中运行程序,在glob()上设置断点并从那里获取回溯(

我正在一台装有
GLIBC_2.27
(Ubuntu 18.04)的机器上编译一个共享库,该库将加载到装有
GLIBC_2.17
(Centos 7)的机器上。实际上,其他所有库都可以静态链接到我的共享库中,但glibc不能。因此,我用
readelf
扫描了库中对GLIBC_2.27的引用,并重写了与之相关的所有函数。除了
glob@GLIBC_2.27
。我没有显式调用glob()。如何找到名为
glob()
的函数或库?

我不知道这是否有效,但如果您在
gdb
中运行程序,在
glob()
上设置断点并从那里获取回溯(
bt
),会怎么样?我强烈建议您只需在操作系统(CentOS 7)上编译共享库即可你需要使用它而不是Ubuntu——这将为你节省大量的痛苦和时间。给你自己找一个Docker,然后(甚至可能更旧的)Centos镜像,在那里构建你的镜像。这实际上是为Linux构建的Python C扩展的数量。@AnttiHaapala docker解决方案工作得很好。@KevinZ然后你应该写一个关于它的答案:D(并稍微修改一下这个问题-不是如何告诉调用了哪个库,而是如何编译:D)