sau khi nâng cấp lên Ubuntu 11.10, tôi thấy rằng nhiều phát triển cũ và hiện tại của tôi không thể được biên dịch nữa. Tôi đã giảm được vấn đề với một ví dụ đơn giản:Sự cố liên kết trong Ubuntu 11.10
#include <X11/Xlib.h>
int main() {
Display* display = XOpenDisplay(":0.0");
XCloseDisplay(display);
return 0;
}
Biên soạn nó bằng cách sử:
g++ -lX11 test.cpp
hoặc
g++ -c -o test.o test.cpp
g++ -lX11 -o test test.o
Nguyên nhân thất bại xảy ra:
/tmp/ccBAOpzy.o: In function `main':
test.cpp:(.text+0x11): undefined reference to `XOpenDisplay'
test.cpp:(.text+0x21): undefined reference to `XCloseDisplay'
Bất kỳ ý tưởng? Tôi đã phát hiện ra rằng một số nội dung liên kết đã thay đổi trong 11.10:
https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition
Nhưng vẫn không giải thích những vấn đề này.
Bạn đã cài đặt gói dev X11 dev trước đây. – boto
@boto Tôi biết điều đó. Trên thực tế, sự cố nằm trong thứ tự tham số. Ubuntu 11.10 tàu GCC 4.6.1, mà dường như giới thiệu các ràng buộc đặt hàng tham số chặt chẽ hơn. g ++ test.cpp -lX11 hoạt động tốt. – cyberguijarro
Bây giờ chúng ta hãy xem làm thế nào tôi có thể làm cho SCons làm việc xung quanh ... – cyberguijarro