Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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
Linux GCC-动态依赖关系_Linux_Gcc_Dynamic_Ld_Linkage - Fatal编程技术网

Linux GCC-动态依赖关系

Linux GCC-动态依赖关系,linux,gcc,dynamic,ld,linkage,Linux,Gcc,Dynamic,Ld,Linkage,你好!我在Linux上使用gcc进行链接时遇到问题。例如,我在一台机器上编译了这个项目,并将它与libGLEW链接起来。当我试图在另一台机器上运行它时,它找不到libGLEW,因为第一台机器有libGLEW.so.1.7,第二台机器有libGLEW.so.1.10 ldd告诉我,它依赖于'libGLEW.so.1.7'。 创建符号链接'libGLEW.so.1.7=>libGLEW.so.1.10'后,一切正常,但有没有办法将'libGLEW.so'存储为依赖项而不是'libGLEW.so.1.

你好!我在Linux上使用gcc进行链接时遇到问题。例如,我在一台机器上编译了这个项目,并将它与libGLEW链接起来。当我试图在另一台机器上运行它时,它找不到libGLEW,因为第一台机器有libGLEW.so.1.7,第二台机器有libGLEW.so.1.10

ldd告诉我,它依赖于'libGLEW.so.1.7'。
创建符号链接'libGLEW.so.1.7=>libGLEW.so.1.10'后,一切正常,但有没有办法将'libGLEW.so'存储为依赖项而不是'libGLEW.so.1.7'?

什么能确保GLEW的函数接口没有更改? 或者甚至版本1.1到1.7的内容仍然是一样的

如果它是使用1.7构建的,那么它也依赖于1.7。 因此,您不应该在另一个版本的GLEW上运行它,除非GLEW的api文档告诉您,出于某种原因,这种跨版本控制是可能的(但我无法想象)

除此之外,还可以使用GLEW 1.1构建它

(因为好像1.1也支持1.7中使用的所有功能,并且出于某种原因,您必须支持两个版本),所以为不同版本的GLEW提供不同版本的程序将是最好和有效的方法

如果情况并非如此,请根据用户要求,将其安装在Glew版本1.7或更高版本上

但是没有一种安全的方法可以将你想要的东西归档。
而且根本就没有gcc或任何编译器命令。

我的意思是它可以用两个版本编译,但如何将包作为二进制文件分发?我应该将库添加到归档文件中并用-L编译它吗?您有两种选择:静态地将库链接到二进制文件中,或者为不同的目标系统生成不同的二进制软件包。将软件包作为编译的对象文件(如main.o)分发并让用户将其与库链接是一个好主意吗?不,您的目标文件仍然仅与与您使用的头文件匹配的库兼容。库仅应在文件中断兼容性时更改其版本号。