2012-08-29 65 views
1

我編寫並編譯了一個MEX函數,可以從MATLAB例程中調用,它在我的計算機上運行良好。但是,當我嘗試讓不同的計算機運行我的例程時,它會打破一個錯誤,指出模塊不存在。我的MEX功能引用了GSL庫和其他一些庫。我想知道是否可以編譯我的MEX函數,以便它是獨立的。當我說獨立時,我的意思是如果我只是將MEX文件複製到另一臺計算機,並且沒有安裝庫或編譯器,它仍然可以工作。使用GNU編譯器生成獨立MEX文件,包括庫

謝謝!

+0

另一臺計算機需要有某些MATLAB共享庫才能運行編譯後的代碼。 – Ansari

+0

@Ansari當我編譯我的代碼時,GSL庫不會自動包含在編譯的文件中嗎? – user1586097

+0

不,它們很可能鏈接到您的MEX文件中。 – Ansari

回答

0

您的外部庫需要是靜態庫。然後有很多方法可以做到這一點:

  • 運行mex(gcc選項)時添加'靜態'鏈接器標誌。
  • 而不是使用「-lgsl」添加「/path/to/libgsl.a」(Linux)的
  • 或簡單地從你使用的庫中的文件MEX目標文件添加到MEX命令

mex文件本身仍然只能在兼容的系統上運行(64位與32位,匹配libc版本)。

在linux上,檢查你是否正確編譯了類型'ldd mexfile.mexext'。您的外部庫不應顯示在列表中。