Score:0

ข้อผิดพลาดเมื่อคอมไพล์ด้วย gcc

ธง cn

ฉันใช้ ubuntu18.04 บนเซิร์ฟเวอร์ ฉันได้ติดตั้ง gcc-4.9 ภายใต้รูทแล้ว แต่ตอนนี้ฉันต้องการติดตั้ง gcc-7.4 ในไดเร็กทอรีของฉันเอง ดังนั้นฉันจึงทำสิ่งต่อไปนี้ ก่อนอื่นฉันดาวน์โหลด gcc-7.4.0.tar.gzและสกัดออกมาแล้ว ซีดี gcc-7.4.0/ จากนั้นดาวน์โหลดข้อกำหนดเบื้องต้นโดยใช้คำสั่ง ./contrib/download_prerequisitesจากนั้นฉันก็วิ่ง

สร้าง mkdir

และ

สร้างซีดี

ฉันต้องการติดตั้ง gcc-7.4 ภายใต้ไดเร็กทอรีของฉันโดยไม่ต้องรูท ดังนั้นฉันจึงกำหนด คำนำหน้า=/บ้าน/ชื่อผู้ใช้ของฉัน/ถัง/ เพื่อรวบรวม คำสั่งที่สมบูรณ์มีดังนี้

../configure --prefix=/home/xxx/bin --enable-shared --enable-threads=posix --enable-languages=c,c++,fortran --disable-multilib

แต่แล้วฉันเกิดข้อผิดพลาด ฉันจึงตรวจสอบ config.log ไฟล์ซึ่งพูดว่า:

รูปแบบกระทู้: posix
gcc รุ่น 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 
กำหนดค่า: 4314: $? = 0
กำหนดค่า: 4303: gcc -V >&5
gcc: ข้อผิดพลาด: ตัวเลือกบรรทัดคำสั่งที่ไม่รู้จัก '-V'
gcc: ข้อผิดพลาดร้ายแรง: ไม่มีไฟล์อินพุต
การรวบรวมสิ้นสุดลง
กำหนดค่า: 4314: $? = 4
กำหนดค่า: 4303: gcc -qversion >&5
gcc: ข้อผิดพลาด: ตัวเลือกบรรทัดคำสั่งที่ไม่รู้จัก '-qversion'
gcc: ข้อผิดพลาดร้ายแรง: ไม่มีไฟล์อินพุต
การรวบรวมสิ้นสุดลง
กำหนดค่า: 4314: $? = 4
กำหนดค่า: 4334: ตรวจสอบชื่อไฟล์เอาต์พุตเริ่มต้นของคอมไพเลอร์ C
กำหนดค่า: 4356: gcc conftest.c >&5
gcc: เกิดข้อผิดพลาดขณะพยายามเรียกใช้ 'cc1': execvp: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
กำหนดค่า: 4360: $? = 1
กำหนดค่า:4397: ผลลัพธ์: 
กำหนดค่า: โปรแกรมที่ล้มเหลวคือ:
| /*confdefs.h */
| #กำหนด PACKAGE_NAME ""
| #กำหนด PACKAGE_TARNAME ""
| #กำหนด PACKAGE_VERSION ""
| #กำหนด PACKAGE_STRING ""
| #กำหนด PACKAGE_BUGREPORT ""
| #กำหนด PACKAGE_URL ""
| /* จบ confdefs.h */
| 
| นานาชาติ
| หลัก ()
| {
| 
| ;
| กลับ 0;
| }
กำหนดค่า: 4403: ข้อผิดพลาด: ใน `/home/zxw/gcc-7.4.0/build':
กำหนดค่า: 4407: ข้อผิดพลาด: คอมไพเลอร์ C ไม่สามารถสร้างไฟล์เรียกทำงาน
ดู `config.log' สำหรับรายละเอียดเพิ่มเติม

มันบอกว่า คอมไพเลอร์ C ไม่สามารถสร้างไฟล์เรียกทำงาน,และนอกจากนี้ยังมี พยายาม exec 'cc1': execvp: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว. ฉันค้นหาทั้งสองประเด็นและอ้างถึง อันนี้แต่ก็ไม่ช่วยอะไร

ฉันยังใหม่กับสิ่งนี้และไม่รู้ว่าเกิดอะไรขึ้น ใครก็ได้ช่วยฉันที หากคุณต้องการข้อมูลเพิ่มเติม โปรดบอกฉัน ฉันไม่รู้ว่าต้องทำอย่างไรเพื่อตรวจสอบเพิ่มเติม

อัปเดต:
1. ฉันไม่สามารถติดตั้งทั้งสองเวอร์ชันทั้งระบบได้ เนื่องจากฉันกำลังเตรียมสภาพแวดล้อมบนเซิร์ฟเวอร์ของแล็บซึ่งฉันไม่มีสิทธิ์เข้าถึงระดับรูท นี่คือเหตุผลที่ฉันพยายามติดตั้ง gcc เวอร์ชันเฉพาะที่ฉันต้องการในไดเร็กทอรีของฉัน
2. เหตุผลที่ฉันต้องการ gcc-7.4.0 เพราะฉันกำลังเตรียมสภาพแวดล้อมสำหรับ เครื่องตรวจจับ2 โครงการซึ่งเป็นโครงการที่จัดทำโดย Facebook และใช้เพื่อเรียนรู้การตรวจจับวัตถุ และจากข้อกำหนดการติดตั้งของ เครื่องตรวจจับ2ฉันต้องเตรียมตัว คูดา และ จีซีซี อย่างแรก ตอนนี้ฉันมีแล้ว คูด้า-10.1,อูบุนตู-18.04 ผมเลยค้นหาว่าต้องใช้ gcc เวอร์ชั่นไหน และจากเว็บทางการของ nvidia ก็บอกว่าเป็น gcc เวอร์ชั่นที่ตรงกัน คูด้า-10.1 และ อูบุนตู-18.04 เป็นและเป็นเท่านั้น gcc-7.4ดังนั้นฉันจึงติดตั้ง gcc เวอร์ชันเฉพาะนี้
3. ฉันขอโทษฉันไม่รู้ว่า gcc-4.9 ติดตั้งแล้ว เหตุผลก็เหมือนกับข้อ 1 ฉันเป็นเพียงผู้ใช้เซิร์ฟเวอร์ของแล็บ มันอยู่ที่นี่แล้วตั้งแต่ฉันเข้าร่วมแล็บ

การปรับปรุงครั้งที่สอง ฉันตาม นี้ และลองใหม่อีกครั้ง คำสั่งที่ผมใช้มีดังนี้

tar xzf gcc-7.4.0.tar.gz
ซีดี gcc-7.4.0
./contrib/download_prerequisites
ซีดี ..
mkdir objdir
ซีดี objdir
/home/xxx/gcc-7.4.0/configure --prefix=/home/xxx/GCC-7.4.0

แล้วได้รับรายงานข้อผิดพลาดเดียวกัน
ฉันสงสัยว่ามีบางอย่างผิดปกติกับเวอร์ชัน gcc ที่มีอยู่ ดังนั้นฉันจึงไม่สามารถสร้างเวอร์ชันใหม่ตาม gcc ก่อนหน้าได้

hr flag
ข้อผิดพลาดบ่งชี้ว่ามีปัญหากับการติดตั้ง (gcc-4.9?) ปัจจุบันของคุณ - ไฟล์เรียกทำงาน `cc1` มีอยู่จริงหรือไม่โดยที่ `gcc` สามารถหาได้ ฉันมี `gcc-4.8` ในระบบ 18.04 ของฉันและมันคือ `/usr/lib/gcc/x86_64-linux-gnu/4.8/cc1` เป็นต้น
sancho.s ReinstateMonicaCellio avatar
ดังที่แสดงในหนึ่งในลิงก์ที่โพสต์ในคำตอบของฉัน (ดู [นี้](https://askubuntu.com/a/647593/226614)) `gcc-4.9` อาจขาดส่วนเติมเต็มบางส่วน ... (libc6, สิ่งจำเป็นในการสร้าง ฯลฯ )
hr flag
FWIW ฉันทำตามวิธีที่สองของคุณในกล่อง 18.04 ของฉันด้วย gcc-4.8 (โดยเฉพาะ 4.8.5-4ubuntu8 จาก repo bionic/universe) และกำหนดค่าได้ดีและสร้างสำเร็จ (ในที่สุด) ฉันไม่คิดว่าจะมีปัญหากับ gcc-4.9 ที่ "เก่าเกินไป" ที่จะสร้างมันขึ้นมา
Score:0

แก้ไข.

  1. คุณอาจลองติดตั้งคอมไพล์ล่วงหน้า gcc-7.4.0 สำหรับผู้ใช้ของคุณเท่านั้น 1, 2, วายเอ็มเอ็มวี.

คำแนะนำและหมายเหตุอื่นๆ:

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

  2. หากคุณมีเหตุผลใดๆ ที่ยังคงเลือกใช้วิธีการของคุณ (จะเป็นประโยชน์หากคุณระบุเหตุผลของคุณ ผู้อื่นอาจให้ข้อมูลเชิงลึกเพิ่มเติมด้วย) ฉันขอแนะนำให้คุณปฏิบัติตาม นี้ (พร้อมหมายเลขเวอร์ชันที่เหมาะสม) ดูเหมือนว่าคุณข้าม/เปลี่ยนแปลงบางส่วน ตัวอย่างเช่น ตำแหน่งทั่วไปคือ --คำนำหน้า=/home/xxx/gcc-<version>, ไม่ --prefix=/home/xxx/bin. ไม่ว่านั่นจะเป็นสาเหตุของปัญหาหรือไม่ ฉันขอแนะนำให้คุณเริ่มต้นด้วยคำสั่งที่แสดงรายการไว้ และถ้าได้ผล ให้เริ่มเพิ่ม กำหนดค่า ธงตามต้องการ

  3. คุณอาจลองติดตั้งแพ็กเกจที่คอมไพล์ไว้ล่วงหน้าสำหรับข้อกำหนดเบื้องต้นแทน ./contrib/download_prerequisitesตามที่อธิบายไว้ ที่นี่.

  4. โปรดโพสต์คำสั่งที่คุณใช้เพื่อ "ติดตั้ง gcc-4.9 ภายใต้รูทแล้ว" (โปรดใช้เวลา 30 วินาทีสำหรับการดำเนินการนี้) การติดตั้ง "ใต้รูท" ไม่ใช่สิ่งที่คุณต้องการทำ

  5. ฉันจะเริ่มต้นด้วยคำแนะนำ แทนที่จะพยายามแก้ไขข้อบกพร่องว่าทำไมคุณถึงได้รับข้อผิดพลาดที่คุณได้รับ เพียงเพื่อให้ตัวชี้ไม่กี่ไป เป็นไปได้ สาเหตุ (จะไม่เจาะลึกลงไปกว่านี้):

    5.1. สำหรับ gcc: ข้อผิดพลาด: ตัวเลือกบรรทัดคำสั่งที่ไม่รู้จัก '-V': 1, 2.

    5.2. สำหรับ gcc: ข้อผิดพลาด: ตัวเลือกบรรทัดคำสั่งที่ไม่รู้จัก '-qversion': ดูด้านบน.

    5.3. สำหรับ gcc: เกิดข้อผิดพลาดขณะพยายามเรียกใช้ 'cc1': execvp: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว: 1.

    5.4. สำหรับ กำหนดค่า: 4407: ข้อผิดพลาด: คอมไพเลอร์ C ไม่สามารถสร้างไฟล์เรียกทำงาน: 1 ตัวอย่างเช่น. หนึ่งในของคุณ กำหนดค่า ตัวเลือกน่าจะเป็นตัวการ เริ่มตามข้อ 2.

Kyrie Erving avatar
cn flag
ขอบคุณมาก. ฉันได้อัปเดตข้อมูลบางอย่างที่คุณกล่าวถึงแล้ว และกำลังพยายามทำตามขั้นตอนที่คุณกล่าวถึง ฉันจะอัปเดตอีกครั้งหลังจากดำเนินการเสร็จสิ้น
hr flag
`5.1` และ `5.2` ดูปกติสำหรับฉัน - สคริปต์ `./configure` ลองใช้ตัวเลือกมากมายเพื่อพิจารณาว่าสภาพแวดล้อมการสร้างเป็นอย่างไร
sancho.s ReinstateMonicaCellio avatar
@steeldriver - เห็นด้วย
Score:0
ธง ph

ฉันสังเกตเห็นสิ่งนี้ทันที:

รูปแบบกระทู้: posix
gcc รุ่น 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 

ดูเหมือนว่ากำลังพยายามใช้ gcc เวอร์ชันเก่าที่คุณติดตั้ง 4.9 เพื่อสร้าง 7.4 ฉันดูไปรอบๆ แล้วไม่พบข้อบ่งชี้ว่าเวอร์ชันเก่าของ gcc ใดที่สามารถสร้างเวอร์ชันใหม่กว่าได้ แต่ฉันจะไม่แปลกใจเลยหาก 7.4 ใช้คุณลักษณะที่ 4.9 ไม่รองรับ

มีเหตุผลเฉพาะที่คุณต้องใช้ 4.9.3 เพื่อสร้าง 7.4.0 หรือไม่ ถ้าไม่ ฉันขอแนะนำให้ติดตั้ง gcc รุ่นที่สร้างไว้ล่วงหน้าของ Ubuntu (sudo apt ติดตั้ง gcc-7) ซึ่งดูเหมือนว่าจะมี 7.5.0 บน Ubuntu 18.04 และใช้แทน

Kyrie Erving avatar
cn flag
ขอบคุณมาก เหตุผลที่ฉันต้องใช้ `gcc-7.4` คือเว็บไซต์ nvidia ระบุว่า gcc รุ่นเดียวที่ตรงกับ `cuda-10.1` และ `ubuntu 18.04` คือ `gcc-7.4` ดังนั้นฉันจึงลอง เพื่อติดตั้งเวอร์ชัน 7.4 เฉพาะ แทนที่จะใช้ gcc เวอร์ชันที่สร้างไว้ล่วงหน้าซึ่งอาจให้เวอร์ชัน 7.5 แก่ฉัน
Knud Larsen avatar
by flag
gcc-7.5 เป็นเวอร์ชันแก้ไขข้อบกพร่องของ "7.4" .... คุณแน่ใจหรือว่า gcc-7.5 ไม่ทำงานกับ CUDA ? ..... การสร้าง gcc-7.4 : จำเป็นต้องมีคอมไพเลอร์ระบบ g++-7.5 / gcc-7.5

โพสต์คำตอบ

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