2012-05-20 63 views
0

混合C++/Free Pascal程序,Linux。我曾經在一個32位的Debian盒子上構建它,並在64位的CentOS 5.3服務器上運行它,並且它工作正常。現在我已經將我的Debian盒升級到了6.0.3(Squeeze)。接下來的重建後,程序不會在服務器主機上運行了,而不是打印如下:升級的生成機器(Debian),生成不能在服務器上運行(CentOS)

myapp: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by myapp) 
myapp: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by myapp) 

現在,當我運行ls -l /usr/lib/libstdc++*,我注意到,在開發框libstdc++.so.6是一個符號鏈接libstdc++.so.6.0.13,而在主機上它是libstdc++.so.6.0.8的符號鏈接。這可能是罪魁禍首。

您能提出一個故障排除策略嗎?我是否應該在開發箱上放置早期版本的libstdC++並嘗試鏈接它,或嘗試升級prod盒?

+1

爲什麼不在新機器上重建呢? – wallyk

+0

無法將編譯器置於公共Web主機上。 –

+0

儘管可以加載所有庫並製作使用正確版本的版本,但最簡單的過程是創建一個與生產機器相同風格(分佈和32/64位)和版本的開發機器。如果缺少硬件,它可能是現有構建機器上的虛擬機。 – wallyk

回答

0

您能否提供一個故障排除策略,請

需要任何故障排除。你只需要閱讀這個answer

我應該以某種方式將的libstdC++的早期版本在開發框,並嘗試針對其鏈接,

這是行不通的。您的新GCC將發出libstdc++.so.6.0.13中定義的符號,並且您對libstdc++.so.6.0.8的鏈接將失敗。

或嘗試升級prod盒?

如果可以,那可能是最簡單的選擇。

相關問題