背景: 我有AWS Lambda運行nodejs 6.10。對於我的代碼,我需要有一個C庫來運行算法。這是由我的機器上的node-gyp編譯的。使用稍舊版本的GLIBCXX
我的buildserver是一個過時的ubuntu 14.04,我在其上運行我的node-gyp編譯代碼,並且所有內容都按預期工作。
現在,我已將我的ubuntu更新到17.04版本。這似乎給我Version of GLIBCXX
我已經跑雲集GLIBCXX在不同環境下的版本問題
- /sbin目錄/ -p LDCONFIG | grep stdC++
- (使用1的路徑)strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep LIBCXX
在這裏您可以看到,在Ubuntu 17.04上,GLIBCXX從v3.4到3.4.22都可用,其他環境只有3.4.19。在Ubuntu 17.04編譯
我的代碼是尋找GLIBCXX_3.4.21這不適用於以下錯誤
"errorMessage": "/var/lang/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/task/addon.node)",
請求運行環境和結果:有沒有通過任何方法(除使用自定義docker /回到舊版本的ubuntu等),我可以設置編譯器使用GLIBCXX_3.4.19,當環境(AWS lambda支持最新版本?)時,我最終可以改變它。理想情況下,我正在尋找一個編譯器標誌,我可以在機器上永久設置或通過node-gyp來傳遞,這樣我就可以使用正確的版本。
觀察:即使我有GLIBCXX_3.4.22它只是linkling GLIBCXX_3.4.21(?或者它們是向後兼容)
相關帖子:https://stackoverflow.com/questions/38446439/linux-running-executable-error-glibcxx-3-4-21-not-found?noredirect=1&lq=1 – agfkhj11
相關帖子:https:///stackoverflow.com/questions/4133674/glibcxx-versions – agfkhj11
找到這個信息https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths它可以幫助你設置LD路徑,但完全不確定如何使用node-gyp – agfkhj11