2013-04-27 32 views
5

Tôi đã phát triển với CentOS, Qt 4.7, và GCC 4.4lỗi Linker: tài liệu tham khảo không xác định đến biểu tượng 'pthread_rwlock_trywrlock @@ GLIBC_2.2.5'

Tôi vừa mới cài đặt Red Hat phát triển Toolset 1.1 bao gồm GCC 4.7 .2, và vào cuối make, tôi gặp lỗi

/usr/bin/ld: ../../bin/Solo: undefined reference to symbol '[email protected]@GLIBC_2.2.5' 
/usr/bin/ld: note: '[email protected]@GLIBC_2.2.5' is defined in DSO /lib64/libpthread.so.0 so try adding it to the linker command line 
/lib64/libpthread.so.0: could not read symbols: Invalid operation 
collect2: error: ld returned 1 exit status 

Tôi đoán rằng các chủ đề Qt tham chiếu đến điều đó. Làm thế nào tôi có thể sửa chữa nó?

+0

Dòng lệnh của bạn cho trình biên dịch/liên kết có chứa '-pthread' không? –

Trả lời

14

Bạn muốn biên dịch với -pthread mà làm nhiều hơn chỉ là liên kết với libpthread:

Adds support for multithreading with the pthreads library. This option sets flags for both the preprocessor and linker.

4

Đọc lưu ý: cố gắng thêm /lib64/libpthread.so.0 vào Makefile (-lpthread sau gcc lệnh, hoặc /lib64/libpthread.so.0 sau ld (hoặc sau gcc -shared)), hoặc một cái gì đó giống như LIB += -lpthread nếu có định nghĩa như ở đâu đó.

Xem thêm: Adding external library into Qt Creator projecthttp://www.qtcentre.org/threads/39144-How-to-add-a-lib-to-a-qt-project

Btw, gửi Makefile của bạn, vì vậy ai đó sẽ có thể trỏ đến dòng chính xác.

3

Bạn chỉ cần thêm CONFIG += thread đến file .pro của bạn.

0

Trong máy tính xách tay nhỏ của tôi Linux (nơi tôi có một túi hỗn hợp của các thư viện), tôi chỉ phải thêm

LDFLAGS=-lpthread 

AT THE END của các đối số lệnh cấu hình.

Sau đó, thực hiện công việc của mình một cách hoàn hảo (Với các thư viện hiện có).

Các vấn đề liên quan