Câu hỏi Các tiêu đề hệ thống chính xác của Ubuntu đã di chuyển đến nơi khác và không thể tìm thấy sys / ucontext.h


Tôi đang trong quá trình chuyển một số ứng dụng từ Maverick 10.10 sang Chính xác 12.04. Một số tiêu đề hệ thống dường như không ở cùng một nơi. Điều này là cho tôi một số nhức đầu vì nó không có vẻ quan trọng mà tôi thêm các đường dẫn bao gồm.

Đặc biệt, trên Maverick, có một tập tin trong /usr/include/sys/ucontext.hvà tệp này xác định hằng số REG_EIP. Bây giờ, trên Chính xác, tệp này đã chuyển sang /usr/include/x86_64-linux-gnu/sys/ucontext.hnhưng g ++ 4.6 và 4.7 không có đường dẫn:

`gcc -print-prog-name=cc1plus` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.6
 /usr/include/c++/4.6/x86_64-linux-gnu
 /usr/include/c++/4.6/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed
 /usr/include
End of search list.

hậu quả của việc này là khi bao gồm #include <ucontext.h>, REG_EIP không được định nghĩa

Tôi đã thử thêm #include <sys/ucontext.h> nhưng tôi vẫn gặp lỗi:

error: 'REG_EIP' was not declared in this scope

Bất kỳ ý tưởng làm thế nào để sửa lỗi này?


2
2017-12-20 17:17


gốc




Các câu trả lời:


Bạn có thể tạo một liên kết tượng trưng bằng cách sử dụng điều này trên một thiết bị đầu cuối:

$ sudo ln -s /usr/include/x86_64-linux-gnu/sys/ucontext.h /usr/include/sys/ucontext.h

Nếu /usr/include/sys/ucontext.h đã tồn tại, bạn có thể đổi tên nó trước:

$ sudo mv /usr/include/sys/ucontext.h /usr/include/sys/ucontext.h.backup

Nếu có gì sai, bạn có thể xóa liên kết tượng trưng và khôi phục bản sao lưu:

$ sudo rm /usr/include/sys/ucontext.h
$ sudo mv /usr/include/sys.ucontext.h.backup /usr/include/sys/ucontext.h

1
2017-12-20 19:59



Đây là một giải pháp tồi tệ đến nỗi tôi rất có thể sẽ downvote nó, nếu nó không phải là một thực tế nhỏ, với khả năng tuyệt vời, cũng là giải pháp tốt nhất có thể, với những hạn chế về kiến ​​trúc và kỹ thuật kém xảy ra tại ubuntu. Tôi sẽ không đi xa như upvoting nó hoặc. Tôi sẽ để nó ngồi một lúc, tôi sẽ bắt hơi thở vào ngày mai, hoặc có lẽ một ngày sau đó, có thể đá và đấm vào phòng tập thể dục, và sau khi tôi uống cà phê buổi sáng, tôi sẽ chấp nhận câu trả lời này lên. Cũng sẽ suy ngẫm về các công việc khác. - lurscher
và tất nhiên, tình huống này thực hiện giống hệt với các bản phân phối khác dựa trên Chính xác và Số lượng, chẳng hạn như Linux Mint 13 và 14. - lurscher
thất bại, vì một số lý do này không làm việc, tôi đã softlinked toàn bộ / usr / include / x86_64-linux-gnu / sys thư mục để / usr / include / sys, nhưng vẫn nhận được cùng một lỗi ... không có ý tưởng những gì là đang xảy ra - lurscher