Câu hỏi Biên dịch bộ công cụ điều hướng CARMEN trên Ubuntu 10.04


Tôi là người mới bắt đầu với Ubuntu và tôi đã cố gắng cài đặt một số bộ công cụ robot để sử dụng trên Powerbot mà tôi đang làm việc. Tôi hiện đang cố gắng cài đặt bộ công cụ Điều hướng CARMEN và tôi đã theo dõi các hướng dẫn này trong Ubuntu Wiki để đi từng bước. Thủ tục của tôi như sau:

  1. Nhập khẩu canlib.h trong / usr / include
  2. Cài đặt gtk + -2.0 đến: sudo apt-get install libgtk2.0- *
  3. Cài đặt các gói bổ sung (không cài đặt được libwrap0-deb: E: Không thể tìm thấy gói libwrap0-deb). Nếu không thì tất cả các gói khác đã được cài đặt.
  4. Theo liên kết mà tôi đã chỉ định, họ đã chỉ định một bản hack nơi bạn nhận xét các dòng 274 đến 286 trong tệp cấu hình để hệ thống không tìm kiếm libgdk_imlib.a.
  5. Tôi chạy ./configure và tôi nhận được kết quả sau:

    Using $CC as gcc...
    Found processor i686.
    Congratulations. You are running Linux.
    Found kernel 2.6.32-71-generic.
    This doesn't look like SuSE!
    Searching for linux kernel headers... found at /usr/src/linux-headers-2.6.32-71-generic/include
    Searching for canlib... Found canlib header at /usr/include/canlib.h
    Searching for GTK... found, version 2.20.1
    Searching for joystick... found at /usr/include/linux/joystick.h
    
    It looks like this is a system include, so I won't add it to the standard
    include path. Adding partial system include paths is usually a recipe for
    disaster. If this is the wrong thing to do, you could add the following
    line to Makefile.vars:
    JOYSTICK_INCLUDE = -I/usr/include/linux/joystick.h
    
    Searching for tcpd.h... not found
    Looks like your system does not support access control.
    Sorry about adding security holes.
    Searching for jpeglib.h... found
    Searching for zlib.h... found
    Searching for ImageMagick (Wand)... not found
    Searching for Java... not found
    Searching for doxygen... found
    Searching for SWIG... not found
    Should the C++ tools be installed for CARMEN: [Y/n] y
    Should the old laser server be used instead of the new one: [y/N] n
    
    Type the install prefix to use for public installs, or hit enter to keep the
    default as /usr/local. (This prefix is not currently used by any rules.)
    
    Install path [/usr/local/]: 
    
    You must have Linux kernel 2.0.20 to compile:
    Nomadic Technologies XR4000
    
    These are the robot types CARMEN currently supports:
    1. ActiveMedia Pioneer I
    2. ActiveMedia Pioneer II
    3. iRobot ATRV
    4. iRobot ATRV-JR
    5. iRobot B21R
    6. Scout
    7. OrcBoard v.4 
    8. OrcBoard v.5 (Experimental)
    9. Segway RMP
    10. *
    
    Please select which robots you wish to compile base modules for.
    e.g., 1, 2, 6 would compile support for both Pioneer types and a Scout.
    Hit enter to compile them all, or type "none" to compile no base module
    support, for example, if you will be working exclusively in simulation.
    
    Robot numbers [*]: 1,2,3,4,5,6,7,8 
    
    Compiling base support for: pioneer rflex scout orc4 orc5
    

Điều tôi không thích là thực tế là tcpd.h là không tìm thấy khi theo liên kết, nó cần phải được tìm thấy. Tôi chạy tập tin thực hiện trong mọi trường hợp và đây là những gì tôi nhận được khi nó cố gắng để làm cho các chức năng toàn cầu của CARMEN

    ****************************************************************
    * Module  : GLOBAL
    * Comment : CARMEN global functions
    ****************************************************************

    --> Starting make
    ---- Assigning dependencies in GLOBAL
    ---- Compiling global.c to global.o (cc)
    cc1: warnings being treated as errors
    global.c: In function ‘carmen_get_host’:
    global.c:411: error: ignoring return value of ‘fscanf’, declared with attribute     warn_unused_result
    make[3]: *** [global.o] Error 1
    exit: 7: Illegal number: -1
    make[2]: *** [libraries] Error 2
    make[1]: *** [phase1] Error 2
    exit: 1: Illegal number: -1
    make: *** [phase1] Error 2

Xin vui lòng, bất cứ ai có thể giúp tôi ra khỏi đây? Tôi không biết những lỗi này có ý nghĩa gì và tôi không biết cách sửa chúng! Tôi có nên sử dụng phiên bản Ubuntu cũ hơn không?


2
2018-01-13 09:15


gốc




Các câu trả lời:


Tôi không biết công cụ được đề cập, nhưng có thể hữu ích:

  1. Theo apt-search, tcpd.h được cung cấp bởi gói libwrap0-dev (có vẻ là một lỗi đánh máy, "deb"thay vì" dev");

  2. Về lỗi, quá trình biên dịch dừng lại vì một nơi nào đó trong cấu hình hoặc Makefile gcc đã được yêu cầu xử lý tất cả các cảnh báo là lỗi. Cảnh báo cụ thể là cảnh báo có thể bình thường làm ngơ; bạn có thể tiến hành theo hai cách:

    • chỉnh sửa tệp global.c và, trong dòng 411, hãy đặt (void) trước cuộc gọi đến fscanf đó là lỗi, hoặc

    • chỉnh sửa Makefile (s) và tìm nơi tùy chọn -Werror được thêm vào và xóa nó. Sau đó, giữ ngón tay vượt qua.

Cách tốt nhất là liên hệ với tác giả của phần mềm và báo cáo sự cố.

BTW, quay trở lại bản phát hành cũ không phải là một điều nên làm; sẽ tốt hơn nếu làm việc với các nhà phát triển để thích nghi với phần mềm hiện đại. Đó là công việc nhiều hơn trong ngắn hạn, ít hơn nhiều trong một thời gian dài.

Chúc may mắn!


0
2018-01-13 10:22



Xin chào, cảm ơn rất nhiều vì sự giúp đỡ của bạn! Tôi đã thử giải pháp đầu tiên của bạn về việc đặt fscanf (); trong dòng 411 nhưng sau đó tôi nhận được một lỗi khác nói với tôi rằng fscanf có quá ít đối số. Vì vậy, tôi đã thử giải pháp thứ hai của bạn, nhưng tôi không thể tìm thấy -Werror trong bất kỳ makefiles mà tôi đang cố gắng để chạy. - RachDar
Có lẽ tôi không rõ ràng ... trong dòng 411 bạn nên có fscanf(whatever); --- bạn nên đổi nó thành (void)fscanf(whatever) (đó là thành ngữ C để loại bỏ giá trị kết quả của funcion). Nếu bạn không có -Werror, có thể là một trong những -Wsomething được định nghĩa ở đây: gcc.gnu.org/onlinedocs/gcc/Warning-Options.html --- Nhưng nó có thể khá phức tạp khá nhanh - Rmano