2013-07-30 57 views
40

Tôi đang cố gắng tìm kiếm đường dẫn #include trên Linux theo cách lập trình, như tôi hiểu, trong thực tế có nghĩa là tìm kiếm những gì GCC coi là đường dẫn. (Điều đó có đúng không? Clang làm như thế nào?)Tìm hiểu những gì GCC bao gồm đường dẫn là

Theo http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html một số thành phần liên quan đến kiến ​​trúc CPU và phiên bản GCC; sau này đặc biệt có vẻ khó khăn; Tôi cho rằng nó có thể thu được bằng cách chạy gcc --version và phân tích cú pháp đầu ra (hoặc gcc -v), nhưng điều này có vẻ không phù hợp ở mức tốt nhất và mong manh nhất vào lúc tồi tệ nhất. Làm nó từ bên trong mã của một người giả định chương trình của một người đang được biên dịch với GCC có thể là một lựa chọn khác, nhưng nó sẽ đòi hỏi tùy thuộc vào giả định đó.

Cách được khuyến nghị để làm điều đó là gì?

Trả lời

82

Lệnh

echo | gcc -E -Wp,-v - 

sẽ hiển thị con đường đưa vào sử dụng.

+1

hiện lệnh 'gcc' nào trên bash thực hiện cùng một công cụ? –

+3

@WedaPashi: Không. – caf

+0

Có phải 'echo |' cần thiết không? –

15

Tôi không chắc chắn ý của bạn là cách được đề xuất để tìm đường dẫn bao gồm. Các chuẩn cách là như đưa ra dưới đây (đối với C và C++):

$ `gcc -print-prog-name=cc1` -v 
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include" 
#include "..." search starts here: 
#include <...> search starts here: 
/usr/lib/gcc/x86_64-linux-gnu/4.7/include 
/usr/local/include 
/usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed 
/usr/include 
End of search list. 
^C 
$ `gcc -print-prog-name=cc1plus` -v 
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include" 
#include "..." search starts here: 
#include <...> search starts here: 
/usr/include/c++/4.7 
/usr/include/c++/4.7/x86_64-linux-gnu 
/usr/include/c++/4.7/backward 
/usr/lib/gcc/x86_64-linux-gnu/4.7/include 
/usr/local/include 
/usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed 
/usr/include 
End of search list. 
^C 
Các vấn đề liên quan