Score:1

ปัญหาการรวบรวม GCC

ธง es

ฉันเพิ่งดาวน์โหลดคอมไพล์ GCC สำหรับ C/C++ หลังจากคอมไพล์ด้วยคำสั่ง gcc main.c -c -lGL -lGLU -lglut ฉันได้รับข้อผิดพลาดในการอนุญาตซึ่งสามารถแก้ไขได้โดยการเปลี่ยนการอนุญาต ฉันได้รับข้อผิดพลาดนี้แล้ว: ทุบตี: ./main.o: ไม่สามารถเรียกใช้ไฟล์ไบนารี: ข้อผิดพลาดของรูปแบบ Exec. คุณจะช่วยฉันแก้ไขปัญหานี้ไหม นอกจากนี้ถ้ามันช่วยฉันใช้ C.

-ขอบคุณล่วงหน้า

mchid avatar
bo flag
ดูเหมือนว่าอาจเป็นสถาปัตยกรรมที่ไม่ถูกต้อง: https://askubuntu.com/q/648555 `file ./main.o` ส่งคืนอะไร หรือถ้า `main.o` ไม่อยู่ในไดเร็กทอรีปัจจุบัน ให้ค้นหาไฟล์แล้วรันคำสั่ง `file` บน `main.o` เพื่อแสดงประเภทของไฟล์
mchid avatar
bo flag
อาจเป็นไปได้ว่าคอมไพล์ด้วยสถาปัตยกรรมที่ไม่ถูกต้อง แต่อาจมีเหตุผลอื่น นอกจากนี้ คุณได้ติดตั้ง GCC โดยเรียกใช้ `sudo apt install build-essential` หรือไม่ นี่เป็นวิธีที่แนะนำในการดาวน์โหลดและติดตั้ง GCC
hr flag
หลังจากรวบรวม ** อย่างไร ** กันแน่? ข้อเท็จจริงที่ว่าคำสั่งของคุณสร้างไฟล์ `.o` แสดงว่าคุณเพิ่มตัวเลือก `-c` ซึ่งระงับการเชื่อมโยงไปยังไฟล์เรียกทำงานขั้นสุดท้าย
Dequog avatar
es flag
@mchid Idk ฉันลืมวิธีติดตั้งคอมไพเลอร์ gcc แต่ฉันได้ติดตั้งแพ็คเกจ `build-essential` หลังจากนั้นถ้ามันสร้างความแตกต่าง
Dequog avatar
es flag
@steeldriver ฉันอัปเดตคำถามด้วยคำสั่งที่ฉันใช้
hr flag
@Dequog ถูกต้อง - ดังนั้นให้ลบ `-c` (และเพิ่มทางเลือก `-o progname` หากคุณต้องการให้ไฟล์เรียกทำงานนั้นมีชื่อว่า `progname` แทนที่จะเป็น `a.out` ที่เป็นค่าเริ่มต้น)
Dequog avatar
es flag
@steeldriver ตอนนี้ฉันได้รับข้อผิดพลาดนี้: `/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1. o: ในฟังก์ชัน _start': (.text+0x24): การอ้างอิงที่ไม่ได้กำหนดถึง 'หลัก' Collect2: ข้อผิดพลาด: ld ส่งคืนสถานะการออก 1 รายการ
hr flag
`main.cpp` มีฟังก์ชัน `main` จริงหรือไม่ มันคือ ** จริง ๆ ** C หรือเป็น C ++ (ตามที่แนะนำโดยส่วนต่อท้าย `.cpp`) หากเป็นอย่างหลัง ให้ใช้ "g++" แทน "gcc" หากก่อนหน้านี้ (C ที่มี `.cpp` ต่อท้าย) คุณอาจต้องเพิ่ม `-xc` เพื่อกำกับ gcc อย่างเหมาะสม
Dequog avatar
es flag
ขอโทษ ฉันตั้งใจจะใส่ `main.c` และใช่ มันมีฟังก์ชัน `main()` และคำสั่ง `-xc` ไม่ได้ทำอะไรเลย
waltinator avatar
it flag
คุณดาวน์โหลดคอมไพเลอร์ C จากแหล่งที่ไม่ใช่ Ubuntu หรือไม่ ทำไมไม่ใช้คอมไพเลอร์ C จากระบบบรรจุภัณฑ์?
Dequog avatar
es flag
@waltinator ฉันใช้คอมไพเลอร์ c จากระบบบรรจุภัณฑ์
mchid avatar
bo flag
[สิ่งนี้ช่วยได้หรือไม่](https://stackoverflow.com/a/7965472)
Dequog avatar
es flag
@mchid ไม่เพราะ 1. ฉันกำหนดฟังก์ชั่นหลัก 2. คำสั่งดั้งเดิมของฉันมีส่วน `-c` ซึ่งทำให้เกิดปัญหาอื่น
kn flag
ฉันไม่เข้าใจว่าทำไมต้องดาวน์โหลดคอมไพเลอร์ ความเข้าใจของฉันคือ gcc มีอยู่ใน Ubuntu desktop ทุกรุ่น
Dequog avatar
es flag
@NickT เฮ้ ขอโทษ ฉันใช้เวลานานมากในการตอบ แต่ไม่ใช่คอมไพเลอร์ gcc ไม่ได้ติดตั้งให้ฉันโดยอัตโนมัติ มีบางอย่างที่เกี่ยวข้องกับฉันโดยใช้เวอร์ชัน LTS หรือไม่
kn flag
ดูเหมือนว่าฉันจะถามคำถามเดิมเมื่อปีที่แล้ว ความคิดเห็นแตกต่างกันไปว่ามันมีอยู่ในตัวหรือไม่ ดู https://askubuntu.com/questions/1276468/does-ubuntu-20-04-1-lts-not-come-with-a-c-compiler-by-default
Dequog avatar
es flag
ฉันเพียงแค่ต้องบันทึกไฟล์ขออภัย
ADBeveridge avatar
lb flag
เมื่อฉันคอมไพล์โปรแกรมใน Ubuntu จากนั้นย้ายโปรเจ็กต์ (ซึ่งใช้ meson-based) ไปที่ Raspberry Pi คำเตือนนี้พิมพ์ออกมา การแก้ไขคือการสร้างใหม่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา