设置库以支持到多个平台的预编译软件,编译选项的链接的最佳方法是什么?
时间:2020-03-06 15:05:17 来源:igfitidea点击:
我正在维护一个库,其中包含需要链接到的已编译对象
第三方可执行文件。有时,可执行文件已针对Solaris进行了编译,有时是32位Linux应用程序,有时是64位Linux应用程序。
我想做的是将一个"路径"传递给库,然后让应用程序自动选择合适的库。
如果它仅适用于Linux,那就可以了,这样我就可以根据OS定义路径。
这种特殊情况适用于我想链接到Verilog模拟器的PLI / VPI函数库。
我现在所拥有的是
root/path/${MYPLILIB_VER}/rootname/${MYPLIFLAVOR}/plilib.so
味道是其中之一
solaris linux linux64
风格取决于操作系统,如果Linux在64位平台上运行,则还取决于我正在运行的程序的32/64位版本。
我正在寻找一种更好的方法。
解决方案
使用" uname"中给出的系统信息来自动设置路径?
'uname -s'为我们提供内核名称(例如Linux / SunOS)
'uname -i'将为我们提供体系结构(例如x86 / x86_64)
嗯..它看起来像ELF可能会做我想要的..现在有一些好处
应用笔记
在本文的最后一页上,关于制作DSO的是一些信息
在$ PLATFORM和$ LIB期望值上。
似乎在linux上我应该能够使用lib lib64目录结构
容纳两个物体。
去了解更多。
迷失方向的共享对象
我不知道我们使用的是哪个模拟器,但是我们可以尝试将路径放入" LD_LIBRARY_PATH"环境变量中。我相信Cadence和Mentor模拟器都可以在其中找到。我不确定是否毗邻VCS。模拟器的用户手册将提供详细信息。