Python.h พบโดยค้นหา แต่ไม่ใช่ GCC


12

ฉันเพิ่งเขียน C ปฏิบัติง่ายเพื่อตรวจสอบว่าPython.hทำงานหรือไม่

#include<Python.h>
#include<stdio.h>
int main()
{
    printf("this is a python header file included programm\n");
    return 0;
}

เห็นได้ชัดว่ามันไม่ได้ทำอะไรมาก อย่างไรก็ตามเมื่อฉันพยายามรวบรวมด้วยgccมันทำให้ฉันมีข้อผิดพลาด:

foo.c:1:19: fatal error: Python.h: No such file or directory.

แล้วฉันจะตรวจสอบเพื่อดูว่าหลาม devติดตั้ง python-devแพคเกจได้ติดตั้งหรือไม่ได้ใช้ Python.hlocate

$locate Python.h
/usr/include/python2.7/Python.h

เป็นที่ชัดเจนสำหรับฉันว่าฉันมีPython.hไฟล์ส่วนหัวในระบบของฉัน ฉันจะทำให้การทำงานของฉันทำงานได้อย่างไร?


ยินดีต้อนรับสู่ askubuntu! แก้ไขฉันถ้าฉันผิด แต่ฉันจะสมมติว่าคอมไพเลอร์ไม่พบ Python.h เพราะมันไม่ได้อยู่ในไดเรกทอรีการทำงานของคุณและไม่ได้ระบุเส้นทางแบบเต็ม
เอ็ลเดอ

คำตอบ:


18

คุณต้องมีคุณสมบัติของคุณรวมถึง

#include <python2.7/Python.h>

หรือบอก gcc ว่าจะหา Python.h ได้ที่ไหนด้วย

gcc -I /usr/include/python2.7/ program.c 

7

คุณต้องระบุ GCC พร้อมกับเส้นทางรวมสำหรับPython.hส่วนหัว สามารถทำได้ด้วยการ-Iตั้งค่าสถานะ:

gcc -c -I / usr / include / python2.7 sourcefile.c

อย่างไรก็ตามมีวิธีที่ดีกว่าคือใช้pkg-configติดตั้ง pkg-config :

pkg-config --cflags python

สิ่งนี้จะแสดงผลค่าสถานะที่ต้องส่งผ่านไปยัง GCC เพื่อรวบรวมแอปพลิเคชันที่ใช้ส่วนหัวและไลบรารี Python

เมื่อลิงก์ให้ใช้เอาต์พุตของคำสั่งนี้เพื่อรวมไลบรารีที่เหมาะสม:

pkg-config --libs python

คุณสามารถรวมทั้งสองขั้นตอนเข้ากับ:

gcc `pkg-config --cflags --libs python` sourcefile.c

หลังจาก "gcc -c -I ... " ฉันมีเฉพาะไฟล์ที่มีนามสกุล. o ฉันจะรับไฟล์ที่ปฏิบัติการได้อย่างไร
RS

@RS คุณต้องเชื่อมโยงลองทำสิ่งนี้:"gcc file.o -o program"
นาธานออสมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.