1. 程式人生 > >32位的fortran函式庫在64位Linux下編譯及使用的方法

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裡面。