Bạn nên đặt hầu hết các thư viện độc lập vào cuối lệnh, để trình biên dịch có thể tìm thấy ký hiệu và định nghĩa một cách chính xác:
c++ -L/usr/lib/x86_64-linux-gnu -o tom tom.o Block.o IPC.o \
ConnectMxctl.o CI_Metadata.o Log.o \
-lmysqlclient -lpthread -lz -lm -lrt -ldl
Bằng cách làm theo cách này, trình biên dịch sẽ tiếp tục tìm kiếm các ký hiệu không xác định từ các tệp liên kết tiếp theo. Đối với exampile if IPO.o
có sử dụng biểu tượng (type / class / struct / function, v.v.) được xác định trong CI_Metadata.o
, trình biên dịch có thể tìm thấy nó vì bạn đặt CI_Metadata.o
sau IPO.o
. Hầu hết các thư viện đều độc lập, đó là lý do tại sao chúng nằm ở phần cuối của lệnh biên dịch / liên kết.