Điểm:1

Vấn đề biên dịch GCC

lá cờ es

Tôi vừa tải xuống trình biên dịch GCC cho C/C++. Sau khi biên dịch bằng lệnh gcc main.c -c -lGL -lGLU -lglut Tôi gặp lỗi về quyền có thể sửa bằng cách thay đổi quyền. sau đó tôi nhận được lỗi này: bash: ./main.o: không thể thực thi tệp nhị phân: Lỗi định dạng Exec. Bạn sẽ giúp tôi khắc phục điều này? Ngoài ra nếu nó giúp tôi đang sử dụng C.

-Cảm ơn bạn trước

mchid avatar
lá cờ bo
Có vẻ như đó có thể là kiến ​​trúc sai: https://askubuntu.com/q/648555. `file ./main.o` trả về cái gì? hoặc nếu `main.o` không có trong thư mục hiện tại, hãy tìm tệp rồi chạy lệnh `file` trên `main.o` để hiển thị loại tệp đó.
mchid avatar
lá cờ bo
Có thể nó đã được biên dịch cho kiến ​​trúc sai nhưng có thể có những lý do khác. Ngoài ra, bạn đã cài đặt GCC bằng cách chạy `sudo apt install build-essential` chưa? Đây là cách được đề xuất để tải xuống và cài đặt GCC.
lá cờ hr
Sau khi biên dịch chính xác ** như thế nào **? Việc lệnh của bạn tạo ra tệp `.o` cho thấy bạn đã thêm tùy chọn `-c`, tùy chọn này sẽ chặn liên kết đến tệp thực thi cuối cùng
Dequog avatar
lá cờ es
@mchid Tôi không nhớ tôi đã cài đặt trình biên dịch gcc như thế nào, nhưng tôi đã cài đặt gói `build-essential` sau khi điều đó tạo ra sự khác biệt
Dequog avatar
lá cờ es
@steeldriver Tôi đã cập nhật câu hỏi bằng lệnh chính xác mà tôi đã sử dụng
lá cờ hr
@Dequog đúng - vì vậy hãy xóa `-c` (và tùy chọn thêm `-o progname` nếu bạn muốn tệp thực thi được đặt tên là `progname` thay vì `a.out` mặc định).
Dequog avatar
lá cờ es
@steeldriver hiện tôi đang gặp lỗi này: `/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1. o: trong chức năng _start': (.text+0x24): tham chiếu không xác định đến 'chính' coll2: error: ld trả về 1 trạng thái thoát`
lá cờ hr
`main.cpp` có thực sự chứa hàm `main` không? Đó là **thực sự** C hay là C++ (như được đề xuất bởi hậu tố `.cpp`)? Nếu là cái sau, hãy sử dụng `g++` thay cho `gcc`. Nếu trước đây (C có hậu tố `.cpp`), bạn có thể cần thêm `-xc` để chỉ đạo gcc một cách thích hợp.
Dequog avatar
lá cờ es
xin lỗi, tôi định đặt `main.c` và vâng, nó có chứa hàm `main()` và lệnh `-xc` không làm gì cả
waltinator avatar
lá cờ it
Bạn đã tải xuống trình biên dịch C từ nguồn không phải Ubuntu chưa? Tại sao không sử dụng trình biên dịch C từ hệ thống đóng gói?
Dequog avatar
lá cờ es
@waltinator Tôi đã sử dụng trình biên dịch c từ hệ thống đóng gói
mchid avatar
lá cờ bo
[Điều này có giúp được gì không?](https://stackoverflow.com/a/7965472)
Dequog avatar
lá cờ es
@mchid không vì 1. Tôi đã định nghĩa hàm chính 2. lệnh ban đầu của tôi có phần `-c` gây ra vấn đề khác
lá cờ kn
Tôi không hiểu tại sao trình biên dịch cần tải xuống. Tôi hiểu rằng gcc được tích hợp sẵn cho tất cả các phiên bản máy tính để bàn Ubuntu.
Dequog avatar
lá cờ es
@NickT Xin lỗi, tôi mất quá nhiều thời gian để trả lời, nhưng không phải trình biên dịch gcc không được cài đặt tự động cho tôi. Nó có liên quan gì đến tôi khi sử dụng phiên bản LTS không
lá cờ kn
Có vẻ như tôi đã hỏi cùng một câu hỏi vào năm ngoái. Các ý kiến ​​​​khác nhau về việc liệu nó có được tích hợp sẵn hay không. Xem https://askubuntu.com/questions/1276468/does-ubuntu-20-04-1-lts-not-come-with-a-c-compiler-by-default
Dequog avatar
lá cờ es
Tôi chỉ để lưu tập tin xin lỗi
ADBeveridge avatar
lá cờ lb
Khi tôi biên dịch một chương trình trong Ubuntu, sau đó chuyển dự án (dựa trên meson) vào Raspberry Pi của tôi, cảnh báo này được in ra. Cách khắc phục là xây dựng lại.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.