2014-07-01 20 views
6

tôi sử dụngLàm cách nào để biên dịch chương trình trình điều khiển Mongodb-c?

gcc -o mongotest mongotest.c $(pkg-config --cflags --libs libmongoc-1.0) 

cho biên soạn MongoDB mã trình điều khiển c, và sau đó

LD_LIBRARY_PATH=/usr/local/lib ./mongotest 

cho chạy.

Nếu tôi cố gắng mà không LD_LIBRARY_PATH =/usr/local/lib Tôi có

./mongotest: error while loading shared libraries: libmongoc-1.0.so.0: cannot open shared object file: No such file or directory 

Làm thế nào tôi có thể chạy chương trình mà không cần LD_LIBRARY_PATH =/usr/local/lib, Là nó đúng để làm như vậy? Làm thế nào tôi có thể gỡ lỗi chương trình trình điều khiển c mongodb c?

Trả lời

9

Đường dẫn /usr/local/lib phải ở trong /etc/ld.so.conf hoặc ở một trong các tệp trong thư mục /etc/ld.so.conf.d/. Vì vậy, thư viện mongoc sẽ nhận được vào bộ nhớ cache khi bạn ra lệnh ldconfig làm thư mục gốc.

Bạn có thể kiểm tra xem thư viện mongoc là trong bộ nhớ cache mối liên kết động bằng cách thực hiện lệnh này

ldconfig -p | grep mongoc 

Nếu nó là bạn được an toàn để chạy chương trình của bạn mà không chỉ định rõ ràng LD_LIBRARY_PATH.

cách khác để kiểm tra xem thực thi của bạn được liên kết một cách chính xác là do nhận được các thông tin liên kết với ldd lệnh. Nó sẽ in tất cả các thư viện liên kết.

ldd mongotest 

Nếu bạn có thể thấy /usr/local/lib/libmongoc.so.[numbers] có nghĩa là nó được liên kết với thư viện mongoc.

+0

tôi chỉ muốn cung cấp đạo cụ cá nhân để cả hai gắn thẻ lại các câu hỏi phù hợp và trả lời trong bối cảnh chính xác. Đối với các nhà quan sát khác, thẻ duy nhất trên câu hỏi chỉ là "mongodb". –

+0

@NeilLunn Tôi đã nghi ngờ nếu tôi nên loại bỏ thẻ 'mongodb', nếu bạn tự tin về nó, hãy làm như vậy. –

+0

Tôi nghĩ rằng thẻ mongodb vẫn có liên quan vì nó liên quan đến nguồn trình điều khiển c. Đây là một diễn đàn lập trình phải không? Tôi chỉ vui vì bạn thấy điều này như là một vấn đề "C" phần lớn. Và trả lời và gắn thẻ một cách thích hợp. Vì vậy, tất cả hoàn toàn hợp lệ. Câu trả lời và xử lý tốt. –

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