Lệnh xây dựng hiện tại của bạn:g++ demo.cpp -o demo
không chứa thông tin cho trình liên kết ld
thư viện nào nên được liên kết với. Do đó, bạn gặp lỗi trình liên kết:
Trong tài liệu này được viết thư viện nào cần thiết.
Bạn có thể liên kết tĩnh hoặc động.
Liên kết tĩnh có nghĩa là tệp thực thi của bạn sẽ chạy trên các máy không được cài đặt các thư viện cần thiết vì các thư viện nằm bên trong tệp thực thi. Điều này cũng làm cho tệp thực thi có kích thước lớn hơn. Trong trường hợp của MySQL Connector / C ++, các thư viện là:libmysqlcppconn-static.a
và libmysqlclient.a
Liên kết động có nghĩa là tệp thực thi của bạn sẽ cần tìm các thư viện trên máy mà nó sẽ chạy. Thư viện cần thiết là:libmysqlcppconn.so
.
Lệnh xây dựng của bạn với liên kết động (sử dụng libmysqlcppconn.so
) sẽ giống như sau:
g++ demo.cpp -o demo -lmysqlcppconn
Lưu ý thêm về sự khác biệt giữa -l
và -L
như đã đề cập tại đây trên SO
hoặc tại đây trong tài liệu chính thức về trình liên kết gcc
:
Bạn không cần một đường dẫn (-L
) ở đây vì các thư viện phải nằm dưới /usr/local/lib
là cài đặt mặc định và đã có trong đường dẫn tìm kiếm của trình liên kết.