2009-03-15 38 views
8

Tôi đang cố gắng để Python chạy với swig để thực hiện C/C++. Tôi đang chạy hướng dẫn here, 'tạo mô-đun python'. Khi tôi làm cuộc gọiCâu hỏi về lỗi SWIG trivial nhỏ

gcc -c example.c example_wrap.c -I /my_correct_path/python2.5 

tôi nhận được một lỗi:

my_correct_path/python2.5/pyport.h:761:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." 
example_wrap.c: In function 'SWIG_Python_ConvertFunctionPtr': 
example_wrap.c:2034: warning: initialization discards qualifiers from pointer target type 
example_wrap.c: In function 'SWIG_Python_FixMethods': 
example_wrap.c:3232: warning: initialization discards qualifiers from pointer target type 

Nó thực sự không tạo ra một tập tin example.o, nhưng nó không hoạt động. Tôi đang sử dụng python2.5 không 2,1 như trong ví dụ, đây có phải là một vấn đề? Lỗi (mọi thứ khác chỉ là 'cảnh báo') nói điều gì đó về nền tảng sai. Đây là một máy 64bit; Đây co phải vân đê? Gcc của tôi có được định cấu hình sai cho máy của tôi không? Làm thế nào để vượt qua điều này?

CẬP NHẬT: Tôi vẫn gặp sự cố. Làm cách nào để thực sự triển khai "sửa lỗi" này?

+0

lỗi rất có thể liên quan đến nền tảng của bạn là 64 bit. phiên bản python không phải là một vấn đề. – Vasil

Trả lời

7

Tôi tìm thấy chủ đề này đang tìm kiếm câu trả lời cho cùng một lỗi "LONGBIT" trong khi cài đặt python readline cho 32 bit python trên 64bit centos. Các liên kết không có câu trả lời trực tiếp, vì vậy tôi đã phải google thêm cho câu trả lời (có thể là thẳng về phía trước cho người dùng Linux/devs dày dạn). Để tham khảo trong tương lai, giải pháp là buộc 32-bit bằng cách sử dụng "-m32" trong biến môi trường CFLAGS.

bash-3.2$ easy_install readline 
Searching for readline 
Reading http://pypi.python.org/simple/readline/ 
Reading http://www.python.org/ 
Best match: readline 2.6.4 
Downloading http://pypi.python.org/packages/source/r/readline/readline-2.6.4.tar.gz#md5=7568e8b78f383443ba57c9afec6f4285 
Processing readline-2.6.4.tar.gz 
Running readline-2.6.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-mqr9wH/readline-2.6.4/egg-dist-tmp-p3apfF 
In file included from /usr/local/python2.6/include/python2.6/Python.h:58, 
       from Modules/readline.c:8: 
/usr/local/python2.6/include/python2.6/pyport.h:685:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." 
error: Setup script exited with error: command 'gcc' failed with exit status 1 

sau đó tôi thử với CFLAGS = -m32:

bash-3.2$ CFLAGS=-m32 easy_install readline 
Searching for readline 
Reading http://pypi.python.org/simple/readline/ 
Reading http://www.python.org/ 
Best match: readline 2.6.4 
Downloading http://pypi.python.org/packages/source/r/readline/readline-2.6.4.tar.gz#md5=7568e8b78f383443ba57c9afec6f4285 
Processing readline-2.6.4.tar.gz 
Running readline-2.6.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-uauVci/readline-2.6.4/egg-dist-tmp-YY0tQa 
In file included from /usr/include/features.h:352, 
       from /usr/include/limits.h:27, 
       from /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/limits.h:122, 
       from /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/syslimits.h:7, 
       from /usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/limits.h:11, 
       from /usr/local/python2.6/include/python2.6/Python.h:19, 
       from Modules/readline.c:8: 
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory 
error: Setup script exited with error: command 'gcc' failed with exit status 1 

Các lỗi mới nhất là do không có gói glibc-devel cho 32bit (nhờ this thread). Tôi cũng đã phải cài đặt ncurses-devel.i386 và sau đó easy_install đã đi qua và ipython đã nhận ra nó. Cuộc sống của tôi cảm thấy bị hủy hoại cho đến khi tôi nhận được điều này làm việc vì lợi ích của ipython.

bash-3.2$ CFLAGS=-m32 easy_install readline 
Searching for readline 
Reading http://pypi.python.org/simple/readline/ 
Reading http://www.python.org/ 
Best match: readline 2.6.4 
Downloading http://pypi.python.org/packages/source/r/readline/readline-2.6.4.tar.gz#md5=7568e8b78f383443ba57c9afec6f4285 
Processing readline-2.6.4.tar.gz 
Running readline-2.6.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-dHly4D/readline-2.6.4/egg-dist-tmp-oIEDYl 
Adding readline 2.6.4 to easy-install.pth file 

Installed /home/hari/bin/python/lib/python2.6/site-packages/readline-2.6.4-py2.6-linux-x86_64.egg 
Processing dependencies for readline 
Finished processing dependencies for readline 
2

Tôi đã gặp lỗi tương tự khi cố cài đặt gói Python nhưng đã sửa nó.
Các lỗi "LONG_BIT" là:

$ easy_install astropy 
/my_path/epd/epd-7.3-2-rh5-x86/include/python2.7/pyport.h:849:2: 
error: #error "LONG_BIT definition appears wrong for platform 
(bad gcc/glibc config?)." error: Setup script exited with error: 
command 'gcc' failed with exit status 1 

Như bạn đang đề xuất, Alex, tôi đã phải cài đặt phiên bản đúng của EPD Python để phù hợp với yêu cầu của máy tính của tôi và của gói Tôi muốn cài đặt. Có những phiên bản Python chạy song song và tôi nghĩ đây là nơi mà sự nhầm lẫn và lỗi xuất phát. Truy cập Enthought's Repository (nhấp vào "Đăng nhập vào kho lưu trữ" -> Trình cài đặt) và cài đặt phiên bản chính xác.

Đảm bảo bạn dọn sạch mọi thứ (hoặc hỏi ai đó biết họ đang làm gì để làm điều này cho bạn) bằng cách xóa các phiên bản Python cũ. Sau đó, tất nhiên thay đổi đường dẫn .cshrc của bạn để trỏ đến phiên bản mới và nguồn tập tin một cách chính xác. Tôi không có vấn đề gì sau khi tôi làm việc này.

Tôi nhận thấy câu hỏi này được hỏi 4 năm trước!

+2

Không có gì sai khi trả lời câu hỏi 4 năm tuổi. Ngay cả khi OP là quá khứ nó, câu trả lời có thể hữu ích cho một người nào đó làm một tìm kiếm trong tương lai. –

2

Tôi thực sự tìm thấy chuỗi này hai lần, cách nhau vài năm, cả hai trong khi cố gắng cài đặt libxml2 từ nguồn. Kịch bản configure của thư viện thực sự có tùy chọn --without-python, mà tôi đã sử dụng thay vì cố sửa lỗi.

+0

vừa có cùng sự cố, cảm ơn –