我有一个publicly-available FMU我试图将嵌入式.so文件与我的程序的其余部分链接。 (如果您查看作为归档这个包含在.fmu文件中。)在链接阶段我得到以下未定义的引用错误:FMI - C标准库版本差异导致链接错误
RoomHeating_OM_RH.so: undefined reference to '[email protected]_2.11'
RoomHeating_OM_RH.so: undefined reference to '[email protected]_2.7'
如果我看内容使用类似nm -a
的工具,我看到很多未定义的此表单引用,这些引用在链接时不会导致错误。这里有几个这样的线从nm -a
输出:
U [email protected]@GLIBC_2.3.4
U [email protected]@GLIBC_2.0
然而,这是导致错误的那些被事实,即他们的glibc新版本从他们的休息分化在名字里。下面是我在我的libc库/ lib目录(是的,我知道这是旧版本,但它是什么,我坚持与现在):
/lib/libc-2.5.so
/lib/libc.so.6
所以我的猜测是我没有足够新的libc版本来链接。是否要求libc的版本正是.so文件调用的内容?或者它只需要等于或者比所称的版本更新?此外,FMI规范是否涵盖了这方面的兼容性?还是假定在FMU中提供了文件,它们必须使用与将安装在目标机器上相同或较旧版本的库进行编译?
谢谢。这解决了我与图书馆版本的第一个问题。不过,我仍然对FMI规范在这个级别上缺乏粒度感兴趣。当这些库的特定内容将确定FMI是否与目标环境兼容时,规范不会涵盖“库”。它似乎也应该定义这些细节。 – Iniamyen
我希望出口商在FMU中包含的index.html文档中提供这样的依赖信息。 –