পাইথন এইচসি দ্বারা খুঁজে পাওয়া গেছে তবে জিসিসি দ্বারা পাওয়া যায় নি


12

আমি কেবল একটি সাধারণ সি এক্সিকিউটেবল লিখেছি 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.

তারপরে পাইথন-ডেভপাইথন-দেব ইনস্টল করুন প্যাকেজটি Python.hইনস্টল হয়েছে কিনা তা ব্যবহার করে দেখেছি locate

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

এটি আমার কাছে স্পষ্ট যে Python.hআমার সিস্টেমে আমার শিরোনাম ফাইল রয়েছে। আমি কীভাবে আমার নির্বাহযোগ্য কাজ করব?


জিজ্ঞাসুবুন্টু স্বাগতম! আমি ভুল হলে আমাকে সংশোধন করুন তবে আমি ধরে নেব যে সংকলকটি পাইথন h খুঁজে পাচ্ছে না কারণ এটি আপনার কার্যনির্বাহী ডিরেক্টরিতে নেই এবং পুরো পথটি নির্দিষ্ট করা হয়নি।
বয়স্ক গীক

উত্তর:


18

আপনাকে নিজের অন্তর্ভুক্ত করার যোগ্যতা অর্জন করতে হবে

#include <python2.7/Python.h>

অথবা জিসিসি বলুন পাইথন। সহ কোথায় পাবেন

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

7

আপনি জিসিসি প্রদান সঙ্গে জন্য রাস্তা অন্তর্ভুক্ত প্রয়োজন Python.hহেডার। -Iপতাকা দিয়ে এটি করা যেতে পারে :

gcc -c -I / usr / অন্তর্ভুক্ত / পাইথন 2.7 উত্স ফাইল ফাইল

তবে আরও ভাল উপায় আছে: pkg-configPkg-config ইনস্টল করুন ব্যবহার করুন :

pkg-config --cflags পাইথন

এটি পাইথন শিরোনাম এবং লাইব্রেরি ব্যবহার করে এমন অ্যাপ্লিকেশনগুলি সংকলন করতে যে ফ্ল্যাগগুলি জিসিসিতে পাস করতে হবে তা আউটপুট দেবে।

লিঙ্ক করার সময়, উপযুক্ত লাইব্রেরি অন্তর্ভুক্ত করতে এই কমান্ডের আউটপুট ব্যবহার করুন:

pkg-config --libs পাইথন

আপনি উভয় পদক্ষেপের সাথে একত্রিত করতে পারেন:

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

"Gcc -c-I ..." এর পরে আমি .o এক্সটেনশান সহ একমাত্র ফাইল পেয়েছি, আমি কীভাবে এক্সিকিউটেবল ফাইল পেতে পারি?
আরএসএস

@ আরএস আপনার এটিকে লিঙ্ক করতে হবে, এরকম কিছু করার চেষ্টা করুন:"gcc file.o -o program"
নাথান ওসমান

দয়া করে এটি দেখুন: জিজ্ঞাসাবাবু
আরএস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.