有没有办法控制共享库中符号的命名?具体来说,我一直在使用GCC进行一个项目,我们通过Python中的C-Types访问共享库.这很好用,但是最近我一直在使用建议使用英特尔编译器的系统.我可以很好地构建共享对象,但我发现与intel相比,这些符号的命名约定略有不同.特别是当我使用gcc编译时,符号名称如下所示:
__test_function_MOD_read_a_file
Run Code Online (Sandbox Code Playgroud)
英特尔编译的共享对象具有如下符号名称:
test_function_mp_read_a_file__
Run Code Online (Sandbox Code Playgroud)
有没有办法强制命名的一致性或至少在事后改变符号的名称?
例如,考虑以下代码test_function.f90
MODULE test_function
CONTAINS
SUBROUTINE read_a_file
PRINT *,'I did a thing!'
END SUBROUTINE
END
Run Code Online (Sandbox Code Playgroud)
编译行看起来应该是这样的
gfortran -fPIC -c test_function.f90
gfortran -shared -o libtest_function.so test_function.o
Run Code Online (Sandbox Code Playgroud)