Tôi đã lập một dự án của tôi, sử dụng SDL, SDL_ttf, OpenAL và GTK. Tất cả đều xuất hiện các lỗi như sau:Ubuntu 11.10: GCC/G ++ sẽ không liên kết các thư viện
TxtFunc.cpp:(.text+0x61): undefined reference to `TTF_OpenFont'
TxtFunc.cpp:(.text+0x8c): undefined reference to `TTF_RenderText_Solid'
TxtFunc.cpp:(.text+0xf6): undefined reference to `SDL_UpperBlit'
TxtFunc.cpp:(.text+0x108): undefined reference to `TTF_CloseFont'
TxtFunc.cpp:(.text+0x114): undefined reference to `SDL_FreeSurface'
cho mọi cuộc gọi thư viện. Tôi đang biên soạn với các tùy chọn liên kết sau đây:
sdl-config --libs
pkg-config gtk+-2.0 --libs
pkg-config openal --libs
-lalut -lSDL_ttf
Tôi có tất cả các gói cài đặt, và không có "File không tìm thấy" lỗi. Chỉ cần rất nhiều tài liệu tham khảo không xác định ... Nó không có ý nghĩa, vì vậy tôi đã viết lên một ứng dụng test nhanh:
#include "SDL/SDL.h"
int main()
{
SDL_Init(SDL_INIT_VIDEO);
return 0;
}
và biên dịch như sau:
g++ `sdl-config --libs --cflags` -o sdl-test ./sdl-test.cpp
Tôi thậm chí còn cố gắng liên kết trực tiếp để "/usr/lib/libSDL-1.2.so.0" hoặc "/usr/lib/libSDL.a" thay vì
tất cả các tùy chọn kết thúc với cùng một kết quả:
/tmp/cc05XT8U.o: In function `main':
sdl-test.cpp:(.text+0xa): undefined reference to `SDL_Init'
collect2: ld returned 1 exit status
Có ai có ý tưởng gì không?
OP có thể cũng muốn đọc giải thích này về lý do tại sao thứ tự của thư viện trên dòng lệnh quan trọng: http://webpages.charter.net/ppluzhnikov/linker.html –
Đó là nó! Cảm ơn! Tôi đoán tôi không bao giờ biết nó quan trọng, và đã luôn luôn xảy ra để viết nó một cách chính xác! Sử dụng tiếng Nga: Vâng, điều đó có ý nghĩa rất nhiều! Xin cảm ơn các bạn! – Caleb1994