Điểm:0

lỗi khi biên dịch với gcc

lá cờ cn

Tôi đang sử dụng ubuntu18.04 trên máy chủ. Tôi đã cài đặt gcc-4.9 trong thư mục gốc, nhưng bây giờ tôi muốn cài đặt gcc-7.4 trong thư mục của riêng mình, vì vậy tôi đã thực hiện những việc sau. Đầu tiên tôi tải về gcc-7.4.0.tar.gz, và giải nén nó.Sau đó cd gcc-7.4.0/ và sau đó tải xuống các điều kiện tiên quyết bằng lệnh ./contrib/download_prerequisites, sau đó tôi chạy

xây dựng mkdir

xây dựng đĩa cd

Tôi muốn cài đặt gcc-7.4 trong thư mục của mình mà không cần root, vì vậy tôi đã chỉ định tiền tố =/home/myusername/bin/ để biên dịch. Lệnh hoàn chỉnh như sau.

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

nhưng sau đó tôi gặp lỗi. Vì vậy, tôi đã xem xét config.log tệp , có nội dung:

Mô hình chủ đề: posix
phiên bản gcc 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 
định cấu hình: 4314: $? = 0
định cấu hình: 4303: gcc -V >&5
gcc: lỗi: tùy chọn dòng lệnh không được nhận dạng '-V'
gcc: lỗi nghiêm trọng: không có tệp đầu vào
biên dịch chấm dứt.
định cấu hình: 4314: $? = 4
định cấu hình: 4303: gcc -qversion >&5
gcc: lỗi: tùy chọn dòng lệnh không được nhận dạng '-qversion'
gcc: lỗi nghiêm trọng: không có tệp đầu vào
biên dịch chấm dứt.
định cấu hình: 4314: $? = 4
configure:4334: kiểm tra tên tệp đầu ra mặc định của trình biên dịch C
cấu hình:4356: gcc conftest.c >&5
gcc: lỗi khi cố thực thi 'cc1': execvp: Không có tệp hoặc thư mục như vậy
định cấu hình: 4360: $? = 1
cấu hình: 4397: kết quả: 
cấu hình: chương trình bị lỗi là:
| /* confdefs.h */
| #define GÓI_NAME ""
| #define GÓI_TARNAME ""
| #define GÓI_VERSION ""
| #define GÓI_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define GÓI_URL ""
| /* kết thúc confdefs.h. */
| 
| int
| chủ yếu ()
| {
| 
| ;
| trả về 0;
| }
cấu hình: 4403: lỗi: trong `/home/zxw/gcc-7.4.0/build':
cấu hình: 4407: lỗi: Trình biên dịch C không thể tạo tệp thực thi
Xem `config.log' để biết thêm chi tiết.

nó nói rằng Trình biên dịch C không thể tạo tệp thực thivà cũng cố gắng thực thi 'cc1': execvp: Không có tệp hoặc thư mục như vậy. Tôi đã tìm kiếm cả hai vấn đề và đề cập đến cái này, nhưng nó không giúp được gì.

Tôi chưa quen với điều này và không biết chính xác những gì đang xảy ra. Ai có thể giúp tôi? Nếu bạn cần thêm thông tin, xin vui lòng cho tôi biết, tôi không biết tôi có thể làm gì để kiểm tra thêm.

cập nhật:
1.Tôi không thể cài đặt cả hai phiên bản trên toàn hệ thống vì tôi đang chuẩn bị một môi trường trên máy chủ của phòng thí nghiệm mà tôi không có quyền truy cập root. Vì vậy, đây là lý do tại sao tôi cố gắng cài đặt phiên bản gcc cụ thể mà tôi cần trong thư mục của mình.
2. Lý do tôi cần gcc-7.4.0 là vì tôi đang chuẩn bị môi trường cho máy dò2 project, là một dự án do Facebook cung cấp và được sử dụng để học cách phát hiện đối tượng. Và từ yêu cầu lắp đặt của máy dò2, Tôi cần chuẩn bị cudagcc đầu tiên, bây giờ tôi có cuda-10.1,Ubuntu-18.04 , vì vậy tôi đã tìm kiếm phiên bản gcc nào tôi cần và từ trang web chính thức của nvidia, nó cho biết phiên bản gcc phù hợp cuda-10.1Ubuntu-18.04 là và chỉ là gcc-7.4, vì vậy tôi đang cài đặt phiên bản gcc cụ thể này.
3. Tôi xin lỗi tôi không biết làm thế nào gcc-4.9 đã cài đặt, lý do giống như điểm 1, tôi chỉ là người dùng máy chủ của phòng thí nghiệm của tôi, nó đã ở đây kể từ khi tôi tham gia phòng thí nghiệm.

cập nhật thứ hai. tôi đã theo dõi cái này và thử lại, lệnh tôi đã sử dụng như bên dưới.

tar xzf gcc-7.4.0.tar.gz
cd gcc-7.4.0
./contrib/download_prerequisites
đĩa CD ..
mkdir objdir
ổ đĩa cd
/home/xxx/gcc-7.4.0/configure --prefix=/home/xxx/GCC-7.4.0

và sau đó nhận được báo cáo lỗi tương tự.
Tôi nghi ngờ có điều gì đó không ổn với phiên bản gcc hiện tại, vì vậy tôi không thể tạo phiên bản mới dựa trên gcc trước đó.

lá cờ hr
Lỗi cho thấy có sự cố với cài đặt (gcc-4.9?) hiện tại của bạn - tệp thực thi `cc1` của nó có thực sự tồn tại ở nơi `gcc` có thể tìm thấy không? Tôi có `gcc-4.8` trên hệ thống 18.04 của mình và đó là `/usr/lib/gcc/x86_64-linux-gnu/4.8/cc1` chẳng hạn.
sancho.s ReinstateMonicaCellio avatar
lá cờ pl
Như được hiển thị trong một trong các liên kết được đăng trong câu trả lời của tôi, (xem [điều này](https://askubuntu.com/a/647593/226614)), `gcc-4.9` có thể thiếu một số bổ sung... (libc6, xây dựng cần thiết, v.v.)
lá cờ hr
FWIW Tôi đã làm theo phương pháp thứ hai của bạn trên hộp 18.04 của tôi với gcc-4.8 (cụ thể là 4.8.5-4ubuntu8 từ repo bionic/universe) và nó được định cấu hình tốt và (cuối cùng) được xây dựng thành công. Tôi không nghĩ có vấn đề với việc gcc-4.9 "quá cũ" để xây dựng nó
Điểm:0
lá cờ ph

Tôi ngay lập tức nhận thấy điều này:

Mô hình chủ đề: posix
phiên bản gcc 4.9.3 (Ubuntu 4.9.3-13ubuntu2) 

Có vẻ như nó đang cố sử dụng phiên bản gcc cũ mà bạn đã cài đặt, 4.9, để xây dựng 7.4. Tôi đã nhìn xung quanh một chút và không tìm thấy dấu hiệu nào cho thấy phiên bản cũ hơn của gcc có khả năng xây dựng các phiên bản mới hơn, nhưng tôi sẽ không ngạc nhiên nếu 7.4 sử dụng các tính năng mà 4.9 không hỗ trợ.

Có lý do cụ thể nào khiến bạn cần sử dụng 4.9.3 để xây dựng 7.4.0 không? Nếu không, tôi khuyên bạn nên cài đặt phiên bản gcc dựng sẵn của Ubuntu (sudo apt cài đặt gcc-7), có vẻ như nó sẽ cung cấp 7.5.0 trên Ubuntu 18.04 và thay vào đó hãy sử dụng phiên bản đó.

Kyrie Erving avatar
lá cờ cn
Cảm ơn rất nhiều, lý do tại sao tôi cần sử dụng `gcc-7.4` là vì trang web nvidia cho biết phiên bản duy nhất của gcc phù hợp với `cuda-10.1` và `ubuntu 18.04` là `gcc-7.4`, vì vậy tôi mới thử để cài đặt phiên bản 7.4 cụ thể thay vì sử dụng phiên bản gcc dựng sẵn có thể cung cấp cho tôi phiên bản 7.5.
Knud Larsen avatar
lá cờ by
gcc-7.5 là phiên bản sửa lỗi của "7.4". .... Bạn có chắc gcc-7.5 không hoạt động với CUDA không? ..... Xây dựng gcc-7.4 : Cần có trình biên dịch hệ thống g++-7.5 / gcc-7.5.
Điểm:0
lá cờ pl

CHỈNH SỬA.

  1. Bạn có thể thử cài đặt một biên dịch sẵn gcc-7.4.0 chỉ dành cho người dùng của bạn, 1, 2, YMMV.

Khuyến nghị và lưu ý khác:

  1. Cài đặt cả hai phiên bản trên toàn hệ thống. Sau đó sử dụng thay thế cập nhật để chọn phiên bản mặc định sẽ được sử dụng. Trên thực tế, điều đó thường được thực hiện tự động trong quá trình cài đặt và sau này bạn có thể thay đổi lựa chọn của mình thông qua thay thế cập nhật, xem cái này.
    Và bạn cũng có thể chọn phiên bản nào sẽ sử dụng cho từng người dùng, như đây. Đây là cách đơn giản hơn những gì bạn đang cố gắng thực hiện và nó sẽ cung cấp cả hai phiên bản cho tất cả người dùng.

  2. Nếu bạn có bất kỳ lý do nào để vẫn thích phương pháp của mình hơn (sẽ hữu ích nếu bạn nêu ra (các) lý do của mình, những người khác cũng có thể cung cấp thêm thông tin chi tiết), tôi khuyên bạn nên làm theo cái này (với số phiên bản phù hợp). Có vẻ như bạn đã bỏ qua/thay đổi một phần của nó. Ví dụ, một vị trí điển hình là --prefix=/home/xxx/gcc-<phiên bản>, không phải --prefix=/home/xxx/bin. Bất kể đó có phải là nguyên nhân gây ra sự cố hay không, tôi khuyên bạn nên bắt đầu với các lệnh được liệt kê và nếu nó hoạt động thì hãy bắt đầu thêm cấu hình cờ như mong muốn.

  3. Bạn có thể xem xét việc cài đặt các gói biên dịch trước cho các điều kiện tiên quyết, thay vì ./contrib/download_prerequisites, như mô tả đây.

  4. Vui lòng đăng lệnh chính xác mà bạn đã sử dụng để "gcc-4.9 đã được cài đặt trong thư mục gốc" (vui lòng dành 30 giây cho việc này). Cài đặt "dưới gốc" không phải là điều bạn thường muốn làm.

  5. Tôi sẽ đi đầu tiên với các đề xuất, thay vì cố gắng gỡ lỗi tại sao bạn lại gặp lỗi. Chỉ để cung cấp một vài gợi ý để khả thi nguyên nhân (sẽ không đi sâu vào vấn đề này):

    5.1. Vì gcc: lỗi: tùy chọn dòng lệnh không được nhận dạng '-V': 1, 2.

    5.2. Vì gcc: lỗi: tùy chọn dòng lệnh không được nhận dạng '-qversion': xem ở trên.

    5.3. Vì gcc: lỗi khi cố thực thi 'cc1': execvp: Không có tệp hoặc thư mục như vậy: 1.

    5.4. Vì cấu hình: 4407: lỗi: Trình biên dịch C không thể tạo tệp thực thi: 1 làm ví dụ. Một trong những bạn cấu hình tùy chọn có khả năng là thủ phạm. Bắt đầu như được chỉ ra trong mục 2.

Kyrie Erving avatar
lá cờ cn
Cảm ơn rất nhiều. Tôi đã cập nhật một số thông tin bạn đã đề cập và tôi đang cố gắng thực hiện các bước bạn đã đề cập, tôi sẽ cập nhật lại sau khi hoàn thành chúng.
lá cờ hr
`5.1` và `5.2` trông hoàn toàn bình thường đối với tôi - tập lệnh `./configure` thử một loạt tùy chọn để xác định môi trường xây dựng trông như thế nào
sancho.s ReinstateMonicaCellio avatar
lá cờ pl
@steeldriver - Đồng ý.

Đă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.