2012-06-17 54 views
5

Trong khi thực hiện một bộ sưu tập với cross g ++ trong một máy Linux (Lubuntu 11.10) trong chế độ verbose, tôi có thể xem danh sách các mặc định bao gồm các thư mục tiêu đề:g ++ tiêu đề mặc định bao gồm danh sách

#include <...> search starts here: 
/opt/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include 
/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/powerpc-linux 
/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/backward 
/opt/eldk-4.2/usr/../ppc_4xx/usr/include 

Thi rất giống nhau g ++ nhị phân trong một máy Linux (Lubuntu 12.10), tôi nhận được một danh sách khác nhau, với các yếu tố ít:

#include <...> search starts here: 
/opt/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include 

và trong đó một số các elments vẻ xấu xây dựng, như sau:

ignoring nonexistent directory "/opt/ppc_4xx/usr/lib/gcc/powerpc-linux/includ../include/c++/4.2.2" 

Kết quả là một số mã biên dịch trên hệ thống đầu tiên không được biên dịch vào lần thứ hai vì không tìm thấy một số tiêu đề.

Tại sao điều này xảy ra ?. Danh sách này đến từ đâu ?. Ai chịu trách nhiệm xây dựng nó ?. Có thể dễ dàng thay đổi nó không ?.

Mọi trợ giúp đều được đánh giá cao.

+1

Run nó như 'g ++ -v -H' và nó sẽ cho bạn rất nhiều ... –

Trả lời

5

Bạn có thể thêm các thư mục vào đường dẫn tìm kiếm mặc định bằng cách thiết lập các biến môi trường:

  • C_INCLUDE_PATH (cho các tập tin tiêu đề C)
  • CPLUS_INCLUDE_PATH (cho các tập tin tiêu đề C++).

Hoặc, you can create and edit specfile và đặt nơi G ++ tìm kiếm chúng. Bạn có thể kiểm tra đường dẫn với strace gcc.

Additional documentation on specfiles on GCC page.

+0

Đáng tiếc là tôi không biết bất kỳ nơi nào các thư mục mặc định được lưu trữ. Chúng có thể được xây dựng trong trình biên dịch. –

+0

Tôi nghi ngờ nó được lưu trữ trong trình biên dịch, khi thực thi cùng một nhị phân trong các máy khác nhau tạo ra một kết quả khác nhau – Marda

+1

Nó được xây dựng trong trình biên dịch, nhưng các đường dẫn được tích hợp dưới dạng đường dẫn tương đối để chúng có liên quan đến vị trí nhị phân Cài đặt. –

0

Tôi có chính xác một số vấn đề sử dụng ELDK 4.2. Điều này rất có thể kết nối với một cái gì đó mà thay đổi trong ubuntu 12.04 như tôi đã có trình biên dịch chạy tốt trên cùng một máy tính trước khi nâng cấp.

Vấn đề của tôi là được dường như đã bị lãng quên/usr

bỏ qua thư mục không tồn tại "/opt/eldk-4.2/../ppc_82xx/usr/include"

Nó phải là

/opt/eldk-4.2/usr/../ppc_82xx/usr/include

Hoạt động hoàn hảo trên ubuntu 11.10.

Tôi đã thử cả hai cài đặt ELDK từ ISO và sao chép các cài đặt từ một phiên bản làm việc trong ubuntu 11.10

+1

Tôi tìm thấy điều này, http://answerpot.com/showthread.php?3533926-Ubuntu+12.04+and+ELDK+4.1 –

+0

Tôi đã "giải quyết" sự cố của mình bằng cách thêm đường dẫn bị thiếu vào tệp thông số kỹ thuật. Nó là một hack, nhưng. http://www.mingw.org/node/25. Cần lưu ý ELDK 4.2 làm việc trên hình ảnh ubuntu của tôi đã được nâng cấp từ 11.04, nhưng không phải trên một 12.04 mới được cài đặt. Có một số loại không tương thích với cách đường dẫn và liên kết được giải quyết. Tôi đoán là nếu một directoy không kết thúc với/nó sẽ cho kết quả khác nhau ở đâu đó trong một số thư viện –

+0

Tôi không chắc đó là một hack - một giải pháp được yêu cầu ở đây mà cách nhiệt môi trường xây dựng từ máy chủ của nó - nếu không xây dựng sẽ đơn giản là không thể lặp lại được. Một cấu hình môi trường cho các công cụ của bạn có thể được phiên bản kiểm soát với dự án là phải. Thực tế, phiên bản kiểm soát công cụ của bạn cũng là một kế hoạch tốt. – marko

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