Tôi cần phiên bản cũ hơn của GCC để cài đặt bộ công cụ CUDA, vì bộ công cụ CUDA không hỗ trợ GCC mới hơn 5.3.1 và máy Fedora mà tôi đang cố gắng cài đặt đi kèm với GCC 6. Tôi không có nhiều quyền kiểm soát máy, vì vậy tôi phải tự mình xây dựng GCC. Các bước tôi đã theo là:Không thể xây dựng GCC do C++ 11 lỗi
$ cd gcc-5.3.0
$ contrib/download_prerequisites
$ cd ../build
$ ../gcc-5.3.0/configure --prefix=$HOME/local/gcc-5.3.0 --program-suffix=5.3 --enable-shared --enable-multiarch --enable-threads=posix --enable-languages=c,c++,fortran --enable-checking=release --with-tune=generic
$ make
Điều này dẫn đến thành công configure
, nhưng make
thất bại với lỗi:
cfns.gperf:101:1: error: ‘const char* libc_name_p(const char*, unsigned int)’ redeclared inline with ‘gnu_inline’ attribute
Có một bó toàn bộ khác C++ 11 cảnh báo là tốt. Sau khi tìm kiếm một số google, tôi figured rằng điều này đã làm với xây dựng GCC 5 hoặc cũ hơn với GCC 6. Tôi nghĩ rằng nó có thể giúp đỡ nếu tôi có thể buộc các trình biên dịch để làm theo C++ 98 để thay thế. Vì vậy, tôi đã thử:
$ export CXXFLAGS="-std=gnu++98"
$ ../gcc-5.3.0/configure ...
$ make
Không hoạt động. Tôi vẫn tiếp tục nhận được cùng một cảnh báo C++ 11, với việc xây dựng thất bại với cùng một lỗi chính xác. Sau đó, tôi đã thử:
$ ../gcc-5.3.0/configure CXXFLAGS="-std=gnu++98" ...
$ make
Một lần nữa, cùng một lỗi. Tôi nhìn vào Makefile lần này, và chắc chắn có CXXFLAGS
được đặt thành -std=gnu++98
ở đây và ở đó. Ngoài ra, tôi đã cố gắng để xây dựng GCC 4.9.3 cũng như để xem nếu đây là một vấn đề gắn liền với một phiên bản cụ thể, nhưng tôi đã nhận được lỗi tương tự một lần nữa.
Tôi không chắc chắn cách tiếp tục. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao. Cảm ơn.
Theo tài liệu https://gcc.gnu.org/onlinedocs/gcc/Inline.html, 'gnu_inline' là phần mở rộng gcc cho mã C trước C99. Vì bạn có mã nguồn, bạn có thể định vị tệp gây ra lỗi và cố gắng thay đổi khai báo vi phạm thành 'inline' để nó tuân theo cú pháp C99/11 và C++, hoặc thành' __INLINE' hoặc '__inline__'. Tôi đoán là, mã C++ của bạn bao gồm một số tiêu đề được viết cho mã C99 trước. Thông tin thêm tại đây: https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00375.html – user3528438
Đề xuất thú vị. Tôi đã thử những thay đổi như đã đề cập trong liên kết tham chiếu, nó đã cho tôi nhiều hơn nữa so với lỗi trước đó, nhưng cuối cùng nó không thành công với lỗi '' gcc-5.3.0/gcc/cp/except.c: 1043: tham chiếu không xác định đối với 'libc_name_p (char const *, unsigned int) ' collect2: error: ld trả về 1 trạng thái thoát''. – rahul1210
hãy thử các giải pháp này từng cái một? https://www.google.com/search?q=undefined+reference+to+%60libc_name_p&rlz=1CAASUE_enUS669US669&oq=undefined+reference+to+%60libc_name_p&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8 – user3528438