2016-02-08 84 views
0

我是工作中的Linux(CentOS 6.6)服務器的非管理員用戶。我通過Windows電腦上的終端程序登錄。我的問題是,IT部門對於我升級GCC/gfortran並不舒服,所以我想從我的個人文件夾中運行它。他們聲稱最新的yum(這個操作系統版本的devtoolset-3)會降低他們的一些其他功能。這不是GCC的最新版本。作爲用戶在Linux中安裝gfortran

我已經從gfortran.com下載了最新的GCC 5.3二進制文件和先決條件,幾乎可以得到我的測試代碼進行編譯。其實,當我做下面的事情時,它會用-c編譯但不會鏈接。該文件夾是我放置先決條件的地方,也是我從/ usr/lib64目錄中將東西複製到那裏的。

LD_LIBRARY_PATH=/users/home/me/me/gcc53mark/my_lib 
export LD_LIBRARY_PATH 
./gfortran test.f90 

錯誤消息如下: collect2:致命錯誤:無法找到 'LD'

但是LD確實存在

-bash-4.1$ whereis ld 
ld: /usr/bin/ld /usr/share/man/man1/ld.1.gz 
+1

我不理解你。你使用GCC二進制文件還是從源代碼編譯GCC?如果您使用的是二進制文件,那麼您會編譯什麼?當你遇到提及的錯誤時,你正在執行哪個命令? –

+0

我想編譯我的代碼。 gfortran test.f90結果在collect2:致命錯誤:找不到'ld' –

+0

但是gfortran -c test.f90正常工作併產生test.o –

回答

2

多的努力我已經回答了我的問題了!要以非管理員身份將GCC安裝到我自己的個人Linux帳戶中,我最終不得不編譯GCC而不使用最初下載的二進制文件。我的朋友是make install,它知道所有事情都需要去哪,我沒有用二進制文件。

的關鍵是要安裝到我的用戶根目錄/ GCC與提供構建它自己的方法(-prefix)以下命令:

../gcc-5.3.0/configure --prefix$HOME/gcc-5.3.0 --enable-languages=c,c++,fortran --disable-multilib 

對於我來說,我不得不禁用multilib的,因爲我猜測我的系統只有64位庫(我認爲這是我原來的問題)。

在我到那之前,我還必須手動下載先決條件,因爲我的工作場所我認爲會阻止自動先決條件下載程序,如這些說明中所引用的。

https://gcc.gnu.org/wiki/InstallingGCC 

需要從這裏取得先決條件,放入解壓縮GCC時創建的目錄的根目錄。然後將它們解壓縮並鏈接它們,這是在已經解壓縮./contrib/download_prerequisites的批處理文件中完成的。

ftp://gcc.gnu.org/pub/gcc/infrastructure/ 

最後,我需要運行下面的命令,完成後,它看起來在新的庫。當我準備好完全切換到本地較新版本時,我會將其添加到我的.profile中。

LD_LIBRARY_PATH=/users/home/myself/gcc-5.3.0/lib64 
export LD_LIBRARY_PATH 

現在我使用下面的命令運行gfortran,但我也會在稍後將它添加到我的.profile文件中。

/users/home/myself/gcc-5.3.0/bin/gfortran Test.f90 

它的工作原理!從我的本地Linux用戶非管理員帳戶運行GCC的最新版本!

編輯添加我們如何解決這個問題的網絡組: 它不想覆蓋原來的安裝,所以我們安裝到某個網絡文件夾/ gcc-5.3.0。然後,我們修改了組的.profile,在標準路徑之前添加了庫和二進制路徑。

+0

我發現的一個缺點是我的同事沒有一個可以運行我的程序,因爲他們沒有(還)有權訪問運行時調用的gcc 5.3庫。出於某種原因,-static編譯標誌不起作用。 –

+0

Aha,靜態構建的-static-libgfortran –