সিথন এবং মিংডব্লিউয়ের সাথে সংকলন জিসিসি উত্পাদন করে: ত্রুটি: অজানা কমান্ড লাইন বিকল্প '-ম্নো-সাইগউইন'


114

আমি মিংডাব্লু (-৪-বিট) ব্যবহার করে 7৪-বিট জিতে সাইথনের সাথে একটি অজগর এক্সটেনশন সংকলনের চেষ্টা করছি।
আমি পাইথন ২.6 (অ্যাক্টিভ পাইথন ২.6..6) এবং পর্যাপ্ত ডিস্টুয়েলস সিএফজি ফাইলের সাথে (সংকলক হিসাবে মিংউ সেট করার জন্য) কাজ করছি

এক্সিকিউট করার সময়

> C:\Python26\programas\Cython>python setup.py build_ext --inplace

আমি বলছি একটি ত্রুটি পেয়েছি যে জিসিসির কাছে -মন-সাইগউইন বিকল্প নেই:

> C:\Python26\programas\Cython>python setup.py build_ext --inplace
running build_ext
skipping 'hello2.c' Cython extension (up-to-date)
building 'hello2' extension
C:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Python26\PC -c hello2.c -o build\temp.win-amd64-2.6\Release\hello2.o
gcc: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1

জিসিসি হ'ল:

C:\>gcc --version
gcc (GCC) 4.7.0 20110430 (experimental)
Copyright (C) 2011 Free Software Foundation, Inc.

আমি কীভাবে এটি ঠিক করতে পারি?


এখানে একটি লিঙ্ক ! এটি সাম্প্রতিক সিথন এবং মিংডাব্লু দিয়ে সমস্যার সমাধান করে
ইন্দ্রজিৎ

উত্তর:


181

দেখে মনে হচ্ছে জিসিসি ৪..0.০ অবশেষে হ্রাসযোগ্য -mno-cygwinবিকল্পটি সরিয়ে নিয়েছে, তবে ডিস্টিলগুলি এখনও এটিকে ধরেনি। হয় MinGW এর সামান্য পুরানো সংস্করণ ইনস্টল করুন, বা distutils\cygwinccompiler.pyআপনার পাইথন ডিরেক্টরিতে সমস্ত উদাহরণ সরাতে সম্পাদনা করুন -mno-cygwin


10
ধন্যবাদ Ignacio। আমি ইতিমধ্যে নিজেরাই এই সমাধানটি চেষ্টা করেছি (সাইগুইনকমপিটার থেকে এমএনও-সাইগউইনকে সরিয়ে দিতে)। ত্রুটিটি অদৃশ্য হয়ে গেল তবে আমি এলডি সহ একটি ভিন্ন ত্রুটি পেয়েছি। তবে এটি ভিন্ন প্রশ্ন। আমি আগামীকাল পোস্ট করব। এখন কিছুটা বিশ্রাম দরকার ... উইন্ডোতে সংকলন করা এত কঠিন কেন?
জোয়াকুইন

7
এটিই আমার পক্ষে কাজ করেছিল। আমি Ignacio এর নির্দেশাবলী ভারব্যাটিক অনুসরণ করে। সাইগউইনকম্পাইল.পি ফাইলটিতে "" দিয়ে "-ম্নো-সাইগউইন" স্ট্রিংয়ের 4 টি প্রতিস্থাপন প্রতিস্থাপন করা হয়েছে
রাম

4
@ জোয়াকুইন: আপনি ldযে ত্রুটিটি পেয়েছেন তা বাছাই করার ব্যবস্থা করেছিলেন ? আমি একই ত্রুটির মধ্যে চলে এসেছি এবং এটিকে বাছাই করতে সংগ্রাম করছি।
রবিন্টউ

@ আরবিন্টউ হ্যাঁ আমি করেছি। আমি সেই মুহুর্তে একটি রেসিপি পোস্ট করেছি (এবং আমি এটি খুঁজে পেয়েছি!)। দয়া করে সম্পাদনা দেখুন
জোওকুইন

2
পাইথন 2.7.9 এই সমস্যার সমাধান করেছে। পাইথন 2.7.8 এ এখনও আছে।
fx-kirin

11

এগুলি এবং নিম্নলিখিত সমস্যার সমাধান করার প্রক্রিয়া চলাকালীন আমি এই থ্রেডে একটি রেসিপি লিখেছি । এটি অন্যের উপযোগী হতে পারে যদি আমি এখানে এটি পুনরুত্পাদন:


7৪-বিট জিততে মিংডাব্লু সংকলক সহ পাইথন ২.6. with সহ -৪-বিট সিথন এক্সটেনশানগুলি সংকলন করার ধাপে ধাপে ধাপে ধাপে


মিংডব্লিউ সংকলক ইনস্টল করুন 1) 64-বিট সংকলনের জন্য tdm64-gcc-4.5.2.exe ইনস্টল করুন

পাইথন.কে প্যাচ প্রয়োগ করুন
2) সিটিতে পাইথন.কে সংশোধন করুন: b পাইথন 26 http:// http://bugs.python.org/file12411/mingw-w64.patch-এ উল্লিখিত হিসাবে অন্তর্ভুক্ত করুন

ডিস্টিলগুলি
সম্পাদনা করুন ২০১৩ সম্পাদনা করুন: অজগর ২.7..6 এবং ৩.৩.৩-র তুলনায় দ্রষ্টব্য - এমএনও-সাইগউইন শেষ পর্যন্ত সরানো হয়েছে সুতরাং পদক্ষেপ 3 এড়িয়ে যেতে পারে

3) পাইথন 26 \ Lib \ distutils \ cygwinccompiler.py এ মাইংডু 32 সিপি কম্পাইলার ক্লাসে gcc এ কল করা সমস্ত প্যারামিটার -ম্নো-সাইগউইন fom কল করুন
4) একই মডিউলে,'_ এমএসভিসিআর 90 এর পরিবর্তে খালি তালিকা ফিরে পেতে get_msvcr () পরিবর্তন করুন '] যখন এমএসসি_ভার ==' 1500 '।

লিবিপিথন 26.a ফাইল তৈরি করুন (bit৪ বিট পাইথনের অন্তর্ভুক্ত নয়)
সম্পাদনা করুন 2013: নীচের পদক্ষেপগুলি 5-10 Gohlke থেকে libpython26.a ডাউনলোড করে ইনস্টল করে এড়ানো যায়

5) মিংডু-ডাব্লু -64-বিন_এক্স 86_64- মিংডু_20101003_sezero.zip (gendef.exe টিএমডি 64 বিতরণে পাওয়া যায় না from) অন্য সমাধান হ'ল উত্স থেকে জেন্ডাফ সংকলন করা) থেকে gendef.exe পান
6) পিথন 26.dll অনুলিপি করুন (সিটিতে অবস্থিত directory উইন্ডোজ \ system32) ব্যবহারকারী ডিরেক্টরিতে (সি: \ ব্যবহারকারী \ আমার নাম)
7) পাইথন 26.def ফাইলটি এর সাথে উত্পাদন করুন:

gendef.exe সি: \ ব্যবহারকারীগণ \ আমার নাম \ পাইথন 26.dll

8) উত্পাদিত পাইথন.ডিএফ ফাইলটি (যে ফোল্ডারে জেন্ডাফটি কার্যকর করা হয়েছিল সেখানে অবস্থিত) ব্যবহারকারীর ডিরেক্টরিতে
সরান 9) লিবিপিথন.এর সাথে উত্পাদন করুন:

dlltool -v --dllname python26.dll --def C: \ ব্যবহারকারীরা \ myname \ python26.def --output-lib C: \ ব্যবহারকারীগণ \ myname \ libpython26.a

10) তৈরি libpython26.a সি: \ পাইথন 26 \ libs এ সরান

আপনার .pyd এক্সটেনশন প্রযোজনা
যেমন cython টিউটোরিয়াল (নির্দেশিত 11) একটি পরীক্ষা hello.pyx ফাইল এবং একটি setup.py ফাইল তৈরি করুন http://docs.cython.org/src/quickstart/build.html )
সঙ্গে 12) কম্পাইল

পাইথন সেটআপ.পিপি বিল্ডেক্সট - ইনপ্লেস

সম্পন্ন!


আমি win64 পাইথন 27 এ 1 পদক্ষেপটি করেছি। তারপরে আমি চেষ্টা করেছি এবং সিথন সফলভাবে ইনস্টল করেছি। আমি কি কোন ধারণা পদক্ষেপ 2. প্যাচ সঙ্গে কি ছিল
craastad

@ ক্রিস রাস্তাদ। মজাদার. তবে এটি সাইথন ইনস্টল করার বিষয়ে নয় তবে সাইথন একটি স্ক্রিপ্ট সংকলন করে। নিশ্চিত যে আপনি এটি বোঝাতে চাইছেন না। যাইহোক, দু'দিন আগে এলবি ত্রুটি থাকার বিষয়ে রবিন্টউয়ের একটি মন্তব্য ছিল। সুতরাং, যদি আপনি প্রকৃতপক্ষে মিংডব্লিউ কাজ করে থাকেন তবে এটি আপনার ইনস্টল করা সংস্করণ এবং সম্ভবত আপনি যে লাইব্রেরিগুলি ইতিমধ্যে ইনস্টল করেছেন তার উপর নির্ভর করে যে আপনি প্রথম শটটিতে ছুটে গেছেন বা ত্রুটি নিয়ে আটকে গেছেন।
জোয়াকুইন

1
+1 এটি একটি দরকারী উত্তর। ন্যাম্পি ব্যবহার করে এক্সটেনশনের জন্য আমাকে numpy/distutilsফোল্ডারের ভিতরে দুটি বিকল্প হ্যাক করতে হয়েছিল mingw32compiler.py
কালেব হাটিংহ

পাইথন 27 এ মনে হচ্ছে আপনাকে সাইজউইনকম্পিলারপিপি ফাইলটিতে এমএস_ডব্লিউএন 64 যুক্ত করে সংজ্ঞা দিতে হবে। এখানে দেখুন: stackoverflow.com/a/19867426/2136991
ডেভিড

@ ওপিকে লিঙ্ক করা প্রশ্নটিতে ডেভিডটি পাইথন 26 কে বোঝায়, পাইথন 27 নয়। আপনি কি ঠিক আমার রেসিপিটি অনুসরণ করেছিলেন এবং এখনও আপনার উল্লেখ পরিবর্তন করার দরকার পড়ে?
joaquin


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