2012-05-14 27 views
0

我正在使用eclipse CDT進行一個大規模的C++項目,該項目已經編譯2年了。我開始有一些奇怪的段錯誤,在2周前沒有任何意義,它似乎以某種方式gtk被損壞。因此,由於無論如何都是升級發行版的時候,我決定從11.04升級到12.04。現在,沒有什麼會鏈接。我在鏈接時引發了一個未定義的引用錯誤。一切都編譯好,所有的pkg-config命令都返回他們應該的。g ++:在Ubuntu發行版升級之後,我的代碼都不會鏈接

任何想法?

下面是一個命令:

Invoking: GCC C++ Linker g++ `pkg-config libv4l2 --libs` `pkg-config --libs alsa` -lmysqlcppconn -lboost_regex `pkg-config sigc++-2.0 --libs` `pkg-config gstreamer-0.10 --libs` `pkg-config gstreamer-app-0.10 --libs` `pkg-config gstreamer-interfaces-0.10 --libs` `pkg-config gstreamer-rtp-0.10 --libs` `pkg-config glib-2.0 --libs` `pkg-config gtk+-2.0 --libs` -lX11 -ldl -lXext `pkg-config gdkmm-2.4 --libs` `pkg-config glib-2.0 --libs` `pkg-config gtkmm-2.4 --libs` `pkg-config ptlib --libs` `pkg-config opal --libs` -fexceptions -o"HHPVideoServer" ./HHPVideoCodec.o ./engine.o ./opal/GstEndPoint.o ./opal/Linux_GstEndPoint.o ./opal/opal-call-manager.o ./logging/log.o ./gui/HHPVideoCodecGui.o ./gui/misc.o ./framework/services.o ./StreamEngine/GSTMediaStream.o ./StreamEngine/HHPStreamingEndPoint.o ./StreamEngine/HHPStreamingProtocol.o ./StreamEngine/Linux_GstMediaStream.o ./SDKEngine/AudioSettings.o ./SDKEngine/CallSettings.o ./SDKEngine/ClientSocket.o ./SDKEngine/Communications.o ./SDKEngine/DeviceInfo.o ./SDKEngine/FileActions.o ./SDKEngine/MediaCodecs.o ./SDKEngine/NetworkSettings.o ./SDKEngine/OSDSettings.o ./SDKEngine/SDKEngine.o ./SDKEngine/SDKEngineCore.o ./SDKEngine/SIPAccount.o ./SDKEngine/ServerSocket.o ./SDKEngine/SessionScheduleDisplay.o ./SDKEngine/Socket.o ./SDKEngine/VideoInput.o ./DigitalIO/DigitalIOCore.o ./DigitalIO/DigitalInputEngine.o 
./HHPVideoCodec.o: In function `HHPVideoCodec': 
/home/jonathan/workspace/HHPVideoServer/Debug/../HHPVideoCodec.cc:9: undefined reference to `PProcess::PProcess(char const*, char const*, unsigned short, unsigned short, PProcess::CodeStatus, unsigned short, bool)' 
/home/jonathan/workspace/HHPVideoServer/Debug/../HHPVideoCodec.cc:9: undefined reference to `PTimedMutex::PTimedMutex()' 
/home/jonathan/workspace/HHPVideoServer/Debug/../HHPVideoCodec.cc:9: undefined reference to `PTimedMutex::PTimedMutex()' 
/home/jonathan/workspace/HHPVideoServer/Debug/../HHPVideoCodec.cc:9: undefined reference to `PTimedMutex::~PTimedMutex()' 
/home/jonathan/workspace/HHPVideoServer/Debug/../HHPVideoCodec.cc:9: undefined reference to `PProcess::~PProcess()'.... 

這正好爲千行,與每個LIB一個未定義的參考。

+0

您可以在不使用Eclipse的情況下從命令行進行編譯和鏈接嗎?怎麼樣一個微不足道的「你好,世界」節目?向我們展示一個最簡單的例子和​​確切的錯誤消息。 –

+0

請複製確切的錯誤信息並將其粘貼到您的問題中。我們需要知道未定義的符號是什麼。 (另外,您可以嘗試在網絡上搜索該符號名稱 - 其他人可能有同樣的問題)。 – user9876

+0

@KeithThompson不,它不能從命令行工作。 (無論如何Eclipse都在使用make文件)。此外,一個簡單的程序編譯和鏈接罰款。 –

回答

4

庫(由pkg-config輸出)應該在.o文件之後列出。鏈接器的參數順序很重要。

+0

好的,這讓我陷入了一個糟糕的困境。爲什麼它會在我之前的所有發行版中都能正常工作,現在突然中斷? –

+1

關於這個問題的更多信息和原因:https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition – TaZ

+0

謝謝你。我每天都會學到新的東西! –