2010-08-03 32 views
7
#include <my_global.h> 
#include <mysql.h> 

int main(int argc, char **argv) 
{ 
    printf("MySQL client version: %s\n", mysql_get_client_info()); 
} 

~ $ gcc -o mysql-test MySQL-test.cgcc sẽ không biên dịch và chạy MySQL C thư viện

im cố gắng để thực hiện chương trình thử nghiệm này từ thiết bị đầu cuối nhưng nhận được thông báo lỗi sau :

/tmp/cceEmI0I.o: Trong chức năng main': MySQL-Test.c:(.text+0xa): undefined reference to mysql_get_client_info'

gì là sai? hệ thống của tôi là ubuntu

Trả lời

14

MySQL đi kèm với tập lệnh đặc biệt được gọi là mysql_config. Nó cung cấp cho bạn các thông tin hữu ích để biên dịch máy khách MySQL của bạn và kết nối nó với máy chủ cơ sở dữ liệu MySQL.

Chuyển tùy chọn --libs - Thư viện và tùy chọn bắt buộc để liên kết với thư viện máy khách MySQL.

$ mysql_config --libs 

tiêu biểu Output:

-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto 

Bây giờ bạn có thể thêm video này vào dòng biên dịch/liên kết của bạn:

gcc -o mysql-test MySQL-Test.c $(mysql_config --libs) 
+0

nhờ rằng kịch bản giúp làm sáng tỏ điều afew, các công việc sau tốt: "gcc -o mysql-test MySQL-test.c -lmysqlclient" bây giờ mà các lớp thử nghiệm đang làm việc, sẽ như thế nào i cổng lệnh đó cho một IDE như NetBeans? – JB87

+0

Tôi khuyên bạn nên viết một Makefile để tự động biên dịch ứng dụng. Trong đó bạn có thể chỉ định các đối số dòng lệnh cho GCC. Bạn có thể tìm thông tin về cách viết makefiles tại đây: http://www.delorie.com/djgpp/doc/ug/larger/makefiles.html Có nhiều trang web để giúp bạn viết makefile của riêng bạn. – Gui13

+0

@codaddict Bạn sẽ làm điều này như thế nào trong cửa sổ? – cokedude

2

Bạn không liên kết với các thư viện. Sử dụng: gcc -llibrarygoeshere -o mysql-test MySQL-Test.c Xem here để biết thêm thông tin về liên kết với gcc.

4

Bạn cần gcc -o mysql-test MySQL-Test.c -L/usr/local/mysql/lib -lmysqlclient -lz

Thay -L/usr/local/mysql/lib với bất cứ nơi nào bạn thư viện khách hàng là (nếu nó không phải là đã có trong LIBPATH của bạn)

Xem MySql instructions for building clients.

2

Nó không phải là lỗi biên dịch. Đó là lỗi liên kết.

Thêm thư viện mysql để tạo tệp thi hành của bạn với tùy chọn -lmysql nên thực hiện thủ thuật.

1

lẽ muộn nhưng làm việc cho tôi
Nếu bạn đang sử dụng một IDE bạn nên liên kết thư viện với dự án của bạn.
Tôi đang sử dụng CodeBlocks trên ubuntu 12.4 64x. Để liên kết thư viện, bạn nên vào Project -> Build options -> linker settings và thêm thư viện. đây là đường dẫn lib của tôi: /usr/lib/x86_64-linux-gnu/libmysqlclient.so

Hy vọng hữu ích ...

3

Đối với công dụng của Netbeans trên Linux

mở bạn thực hiện tập tin (Makefile) và thêm những dòng sau

# These are the flags that gcc requires in order to link correctly against our installed 
# client packages 
MYSQL_LIBS := $(shell mysql_config --libs) 

ngay bên dưới khối Môi trường.

Sau đó nhấp chuột phải vào nút dự án của bạn, chọn Thuộc tính, Xây dựng và thêm $(MYSQL_LIBS) vào thông số Tùy chọn bổ sung.

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