2012-05-05 47 views
8

Tôi đang cố gắng bao gồm tệp thư viện có tên libmathematica.a trong gcc để nó được liên kết trong ví dụ thực thi.GCC không thể tìm thấy tệp tiêu đề trong thư viện được bao gồm

tôi cố gắng để làm điều này với gcc main.c libmathematica.a -o example

Lưu ý: Tôi phải làm điều này với gcc, như ld sẽ không liên kết nó đúng với các thư viện hệ thống đúng

Nhưng tôi nhận được: fatal error: mathematica.h: No such file or directory, số lẻ là vì mathematica.h có trong thư viện.

Bạn có thể trợ giúp không?

Trả lời

11

Tệp tiêu đề không được là trong thư viện. Nó phải có mặt tại một địa điểm nhất định và bạn phải xác định rằng vị trí với cờ -I biên dịch:

gcc -I/path/to/mathematica/include main.c libmathematica.a -o example 

Nếu tập tin tiêu đề là trong thư mục chứa main.c là hoặc trong một thư mục con, sau đó hãy chắc chắn rằng bạn sử dụng dấu ngoặc kép chứ không phải dấu ngoặc nhọn trong chỉ thị #include.

+0

Ohh ... Điều đó có ý nghĩa. Cảm ơn! –

1

Sự cố sẽ nằm trong tệp nguồn của bạn. Nếu mathematica.h là trong hệ thống bao gồm thư mục sau đó bạn sẽ sử dụng #include <mathematica.h> và nếu nó đã được trong một số thư mục địa phương sau đó bạn sẽ sử dụng một cái gì đó như #include "libs/mathematica.h".

+0

Tôi không theo dõi ... Xem main.c không phải là một phần của mathematica.a, một chương trình bên ngoài của nó. Tôi đang cố gắng để liên kết mathematica ví dụ để chạy mã từ mathematica –

+0

Tập tin mathematica.h nằm ở đâu? làm một cái gì đó như find/-name "* mathematica.h". Nếu nó nằm trong phần chính bao gồm/usr/include thì bạn có thể sử dụng #include nếu không nó sẽ được đặt trong cùng thư mục với main.c của bạn và sử dụng #include "mathematica.h". –

+0

Tôi đã bao gồm nó _in_ thư viện, đó là sai. –

1

Hãy thử thêm vào cuộc gọi gcc - một tùy chọn như -I/Full/path/to/Các/Thư mục/ở đâu/người/mong muốn/header/cư trú

Ví dụ: gcc -I/usr/include/mathematica -lmathematica -o ví dụ main.c

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