32位的fortran函數庫在64位Linux下編譯及使用的方法

      最近一直在使用一個數值函數庫。爲了嘗試64位的精度,花了整夜折騰出些東西。

      函數庫在32位Fedora下使用時,文檔提供的例程的調用的都是以靜態庫方式調用的,使用g95編譯後,用ar 工具整理到了一個.a文件。在64位的Fedora 13中,使用64位g95編譯正常,但在鏈接時會說"relocation R_X86_64_32 against `a local symbol' can not be use",所以無奈的情況將代碼庫使用g95 -PIC重新編譯。使用命令gcc -shared -o libmylib.so *.o將函數打包進動態庫。又使用命令 ar -x libf95.a將其中所有.o文件提出來,接着使用gcc -shared -o libf95.so *.o將g95的.o文件打包到libf95.so。在鏈接時要加-lmylib -lf95 來告訴gcc或 f95我們使用了這兩個庫。

      得到編譯好的程序後,還要設置環境變量LD_LIBRARY_PATH來告訴系統我們庫所處的位置。有時系統找不到庫時,你的程序不會告訴你找不到庫,直接就退出了,整的人很鬱悶。使用以下命令

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIR1/LIB來告訴系統庫的位置。可以將 libmylib.so 及libf95.so放到DIR1/LIB裏面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章