我有一個Cython擴展,我在Ubuntu 14上編譯並作爲Anaconda包上傳。我試圖在運行Scientific Linux(6?)的另一臺機器上安裝該軟件包,該軟件隨舊版本的glibc一起提供。當我嘗試導入模塊我得到的,看起來(像)的錯誤是:在Cython中鏈接到特定的glibc版本
./myprogram: /lib/libc.so.6: version `GLIBC_2.14' not found (required by ./myprogram)
當我說「像」 - 在「myprogram」實際上是擴展的。所以名字。
從我所瞭解的這個錯誤是因爲我有一個更新版本的glibc的構建系統,它具有memcpy
函數的更新版本。
這個頁面有問題的一個很好的說明,以及一些相當不切實際的解決方案:http://www.lightofdawn.org/wiki/wiki.cgi/NewAppsOnOldGlibc
還提出了一個更簡單的答案在這裏:How can I link to a specific glibc version?
我的問題是:如何將我將此解決方案到我的Cython擴展?假設__asm__
解決方案的工作原理(如第二個鏈接中所述),將其加入到由Cython生成的C中的最佳方式是什麼?
此外,更一般地說,如何在其他模塊首先避免此問題?例如,我安裝並運行了一個預建的numpy副本,沒有任何問題。