সম্ভবত অপরিজ্ঞাত ম্যাক্রো: AC_MSG_ERROR


113

কনফিগার.একে আমার কাছে নিম্নলিখিতগুলি রয়েছে:

AC_CHECK_PROGS(MAKE,$MAKE make gmake,error)
if test "x$MAKE" = "xerror" ;then
  AC_MSG_ERROR([cannot find a make command])
fi

এটি দীর্ঘদিন ধরে আমাদের প্রকল্পে রয়েছে তবে কিছু সেট আপে আমি এই ত্রুটিটি পেয়েছি:

configure.ac:45: error: possibly undefined macro: AC_MSG_ERROR
  If this token and others are legitimate, please use m4_pattern_allow.
  See the Autoconf documentation.

এর উপরে সম্প্রতি যুক্ত হওয়া লাইনগুলি:

AC_CONFIG_MACRO_DIR([m4])
LT_INIT

এই ত্রুটির কারণ কী এবং কীভাবে সমস্যাটি সন্ধান করা যায় তা কি কেউ ব্যাখ্যা করতে পারবেন?

সম্পাদনা: পার্থক্য সম্পর্কে বিশদ যোগ করা।

বক্স যে কাজ করে:

uname -a Linux host1 2.6.38-13-generic #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

automake: 1.11.1
autoconf: 2.67
m4: 1.4.14
libtoolize: 2.2.6b

বক্স যে কাজ করে না:

Linux host2 2.6.32-35-generic-pae #78-Ubuntu SMP Tue Oct 11 17:01:12 UTC 2011 i686 GNU/Linux

automake: 1.11.1
autoconf: 2.65
m4: 1.4.13
libtoolize: 2.2.6b

নতুন সম্পাদনা: কেবল 32 বিট মেশিনই এই সমস্যাটি অনুভব করে।

আপডেট জন্য আমি একটা সেন্টওএস মেশিনে সমস্যা পুনর্গঠন করা সক্ষম autoconf 2.67, automake 1.11.1, libtool 2.2.6b, এবং m4 1.4.14। এটি কি 32-বিট মেশিন সহ একটি বাগ?


কেন এটি একটি সমস্যা? অটোকনফ ২.6767 দিয়ে আপনার টারবালগুলি তৈরি করুন। আপনার কেবল একটি মেশিনে অটোকনফ ইনস্টল করা দরকার!
উইলিয়াম পার্সেল

1
আমি সচেতন আমি সহজেই সমস্যাটি নিয়ে কাজ করতে পারি, আমি কেবল এটি নিশ্চিত করার চেষ্টা করছি যে এটি একটি বক্সের সাথে একটি সমস্যা এবং আমাদের কনফিগার.এসি বা অন্যান্য কনফিগার ফাইলগুলিতে কোনও সমস্যা নয়।
dbeer

আমি জানি যে অটোকনফ 2.64 মোটামুটি বগি হিসাবে বিবেচিত হয়েছিল। সম্ভবত আপনি 2.65 এ একটি বাগটি ভোগ করছেন।
উইলিয়াম পার্সেল

1
আমি অটোকনফ ২.6767, অটোমেক 1.11.1, লাইবটোল 2.2.6 বি, এবং এম 4 1.4.14
ডাবিয়ার

1
আমি এই সহায়তার কল্পনা করতে পারি না: তবে আপনি কি AC_CHECK_PROGS ([তৈরি করুন], [g গেমকে তৈরি করুন], [ত্রুটি]) চেষ্টা করেছেন? এটি অবশ্যই এম 4 ইস্যুর মতো শোনাচ্ছে এবং m4 এ জিনিসগুলি সম্পূর্ণরূপে উদ্ধৃত করা কেবল সহায়তা করতে পারে। এই নির্দিষ্ট লাইনটি সম্ভবত অপরাধী নয়, কোথাও কোথাও উদ্ধৃত ইস্যুর মতো গন্ধ রয়েছে। আপনি কি সম্পূর্ণ কনফিগার.অ্যাক পোস্ট করতে পারেন?
উইলিয়াম পার্সেল

উত্তর:


256

আমার এই একই সমস্যা ছিল এবং আমি খুঁজে পেয়েছি যে pkg-configপ্যাকেজটি অনুপস্থিত ছিল।

প্যাকেজ ইনস্টল করার পরে, সবকিছু সঠিকভাবে উত্পন্ন হয়েছে।


2
ধন্যবাদ! আমার কেসটির রূপরেখা, একই জুতোতে পরের লোকের জন্য। প্রজননযোগ্য বিল্ডগুলির স্বার্থে আমাকে সমস্ত জিএনইউ বিল্ড সিস্টেম সরঞ্জামগুলিতে কাস্টম পাথের একটি সরঞ্জামচেন ব্যবহার করতে হবে। পিকেজি-কনফিগার ইনস্টল করার সমতুল্যতা কেবলমাত্র প্যাথএইচ সংশোধন "-I /toolchain_local/pkg-config-0.23/share/aclocal"করার জন্যই নয় autoreconfকমান্ডলাইনে যুক্ত ছিল। Pkg-config কেবল বাইনারি ইনস্টল করে না তা বুঝতে আমাকে কিছুটা সময় নিয়েছে। rpm -ql pkgconfigসাহায্য করেছিল।
আসাম্বার

7
আমাকে ইনস্টল করতে হয়েছিল libtool
মিতার

11
প্রযুক্তিগতভাবে কেবল FYI এটি সমস্যার সমাধান করছে না। এই ক্ষেত্রে AC_MSG_ERROR"আপনাকে পিকেজি-কনফিগার ইনস্টল করা দরকার" বলার চেষ্টা করা হয়েছিল তবে কোনও কারণে এটি এই বার্তাটি মুদ্রণ করতে অক্ষম হয়েছিল (সম্পর্কে ত্রুটি প্রদান করে AC_MSG_ERROR)। ইনস্টল করে pkg-configত্রুটি বার্তা প্রিন্ট করার আর কোনও প্রয়োজন ছিল না, তাই AC_MSG_ERRORলাইনটি এড়িয়ে গিয়ে জিনিসগুলি কাজ করে। আপনি যদি অন্য কারও প্যাকেজ ইনস্টল করছেন ঠিক আছে তবে এটি যদি আপনার নিজের কোড হয় তবে আপনি এখনও সমস্যাটি সমাধান করেন নি :-)
মালভাইনাস

19
আমি এর আগেও এই সমস্যার মুখোমুখি হয়েছি এবং autoconf-archiveপ্যাকেজ ইনস্টল করার ফলে সমস্যার সমাধান হয়েছে।
jonthalpy

5
বাহ, এটি একটি সত্যই খারাপ ত্রুটির বার্তাটি ছড়িয়ে ছিটিয়ে থাকা অটোরকনফিগের একটি উদাহরণ।
জন গ্রীন

31

Aclocal.m4 এবং সঠিকভাবে আরও autoreconf -fiবেশি aclocal;autoconf;automake; #and whatever elseস্থাপনের জন্য ম্যানুয়ালি কল করার পরিবর্তে এটি ব্যবহার করার পরামর্শ দেওয়া হয়।

যোগ করার পদ্ধতি ACLOCAL_AMFLAGS = -I m4(toplevel Makefile.am) এবং AC_CONFIG_MACRO_DIR([m4])বর্তমানে এখনও ঐচ্ছিক যদি আপনার কোন নিজস্ব M4 ফাইল ব্যবহার করবেন না, কিন্তু অবশ্যই, করছেন এটা proocess নীরব করবে :)


আমাদের এম 4 ফাইল রয়েছে তাই এটি আমাদের জন্য প্রয়োজনীয়। এছাড়াও, অটোরকনফ-এ জিনিসগুলিকে পরিবর্তন করা একই ত্রুটি তৈরি করে।
dbeer

1
আপনার যদি এম 4 ফাইল থাকে তবে ACLOCAL_AMFLAGS এবং AC_CONFIG_MACRO_DIR আপনার ঠিক কী করা উচিত। (এবং ফাইলগুলি এম 4 / এ রেখে দিন, আপনি যে
দিরটি

ধন্যবাদ, autoreconf -fiতৈরি পিসিআরই সংকলন।
ubnbɐɥs

আমি এই সঠিক একই সমস্যা ছিল এবং দেখা গেছে যে আমি মিস আউট চাই সেটিং ACLOCAL_AMFLAGSমধ্যে Makefile.am- ধন্যবাদ!

2
অটোটুলগুলি এতটা ভাঙা ... এই বোকাটির কোনওই অর্থ হয় না। 30 বছরের মধ্যে কীভাবে জিনিসগুলি এখনও এই ভেঙে যায়?
jww 4'18

27

আমার নিজের সাথে এই সমস্যা ছিল configure.ac, তবে এক্ষেত্রে (এবং গুগল থেকে এখানে কারও উপকারের জন্য) এটি হ'ল কারণ আমি ঘটনাক্রমে উদ্ধৃতি দিয়েছিলাম AC_MSG_ERRORতাই এটি একটি স্ট্রিং হিসাবে ধরা হচ্ছে:

AX_BOOST_BASE([1.42], [], [AC_MSG_ERROR([Could not find Boost])])

আমি একবার AC_MSG_ERRORম্যাক্রোর চারপাশের বর্গাকার বন্ধনীগুলি সরিয়ে ফেললে এটি কাজ করেছিল:

AX_BOOST_BASE([1.42], [], AC_MSG_ERROR([Could not find Boost]))

আপনার মন্তব্যগুলি ইনস্টল করা উচিত pkg-configবা কিছু প্যাকেজ পয়েন্টটি হারিয়েছে saying AC_MSG_ERRORকাজ অনুমিত হয় মত "আপনি প্যাকেজ XYZ ইনস্টল করতে হবে" আপনি একটি সহায়ক বার্তা দিতে, কিন্তু কিছু সমস্যার কারণে AC_MSG_ERRORকাজ করে না। প্যাকেজ এক্সওয়াইজেড ইনস্টল করা অবশ্যই ত্রুটিটি দূরে সরিয়ে ফেলবে তবে প্যাকেজটি একবার আসার পরে ত্রুটি বার্তা প্রিন্ট করার দরকার নেই!

সুতরাং ইনস্টল pkg-configবা একটি নির্দিষ্ট প্যাকেজ কেবল সমস্যাটিকে বাইপাস করে, এটি আসলে এটি ঠিক করে না।


12

আমারও একই সমস্যা ছিল .. আমার সমাধানটি হ'ল

apt-get install libcurl4-openssl-dev

(আমি libcurl all ترڅنګ ইনস্টল করা ছিল) আমার পক্ষে কমপক্ষে ..


11

আমি CentOS 7 এর অধীনে এই একই সমস্যাটি অনুভব করেছি

ক্ষেত্রে, সমস্যাটি ইনস্টল করার পরে libcurl-devel( libcurlইতিমধ্যে এই মেশিনে ইনস্টল করা হয়েছিল) বন্ধ হয়ে গেছে


6

আমারও একই সমস্যা ছিল RHEL7.5 এ অটো-ডি / লিবভোমড-ইউইডের সাথে

"অটোকনফ-সংরক্ষণাগার" প্যাকেজ ইনস্টল করে এটি ঠিক করা হয়েছিল


পাওয়ারটপ ভি 2,31-আরসি 1 তৈরি করতে আমার "অটোকনফ-সংরক্ষণাগার" ডেবিয়ান প্যাকেজটির দরকার ছিল।
4:18

3

আপনি কি স্থানীয় ' m4' ডিরেক্টরি স্থাপন করছেন? যেমন,

> aclocal -I m4 --install

কিছু প্যাকেজ glibtoolize, autoheader, autoconf, automake চালাতে একটি autogen.shবা initgen.shশেল স্ক্রিপ্ট নিয়ে আসে । এখানে autogen.shআমি ব্যবহার করি এমন একটি স্ক্রিপ্ট:

#! /bin/sh

case `uname` in Darwin*) glibtoolize --copy ;;
  *) libtoolize --copy ;; esac

autoheader
aclocal -I m4 --install
autoconf

automake --foreign --add-missing --force-missing --copy

সম্পাদনা

আপনাকে ACLOCAL_AMFLAGS = -I m4শীর্ষ-স্তরে যুক্ত করতে হতে পারে Makefile.am


অটোরকনফ কি ডারউইনের উপর যথাযথ libtoolize নির্বাচন করে না?
উইলিয়াম পার্সেল

আমি একটি স্থানীয় 'এম 4' ডিরেক্টরি স্থাপন করছি। আমি -আই এম 4 যোগ করলাম - অ্যাকোলোকেলে ইনস্টল করুন তবে আমি একই ত্রুটি পেয়েছি। এটি আমার অটোজেন.শ স্ক্রিপ্ট: লাইবটোলাইজ -সি -ফ-অটোহেডার -f অ্যাকোকোকাল -I এম 4
ইনস্টল

1
@dbeer, ACLOCAL_AMFLAGSপরিবর্তনশীল যুক্ত?
ব্রেট হ্যালে

@ উইলিয়ামাম পার্সেল নং, এটি হয় না। ম্যাকোস জিএনইউ লিবিটোলকে 'গ্লিবটোউল' হিসাবে দেখায় এবং অ্যাপল দ্বারা সরবরাহিত একটি (যা কোনও জিএনইউ লিবটোল দ্বারা প্রত্যাশিত আচরণ করে না) 'লিবিটোল' হিসাবে। নোট করুন যে libtoolize 'glibtoolize' হিসাবে ইনস্টল করা আছে। এটি LIBTOOLIZE এবং LIBTOOL ম্যাক্রো নির্দিষ্ট করে ওভাররেড করা যায়। এই অটোজেনের নমুনাটি ভাল হওয়া সত্ত্বেও প্রায়শই স্বতঃআপনারকনফ-চালানো ভাল the
LeoTh3o

3

দেবিয়ানদের জন্য প্রয়োজনীয় প্যাকেজগুলি হ'ল: এম 4 অটোমেক পিকেজি-কনফিগারেশন লাইবটোল


2

ত্রুটিটি অটোম 4 টি দ্বারা উত্পাদিত হয়েছে। যদি জিনিসগুলি সঠিকভাবে সেট আপ করা থাকে তবে কোডটির যে অংশটি ত্রুটিটি উত্পন্ন করে সেগুলিকে কখনই 'AC_MSG_ERROR' দেখা উচিত নয়, কারণ এটি বিন্দুটির আগে এটি এম 4 দ্বারা প্রসারিত করা উচিত ছিল। আপনি বলছেন যে ত্রুটিটি কেবল "কিছু সেটআপে" ঘটে। আমি পরামর্শ দেব যে সেই সেটআপগুলিতে আপনার অটোকনফের ইনস্টলেশনটি ফুবার। সম্ভবত আপনি এম 4 এর একটি বেমানান সংস্করণ ইনস্টল করেছেন।


আমি অটোকনফ 2.65 এবং এম 4 1.4.13 এ আছি। এগুলি কি সামঞ্জস্যপূর্ণ?
দবির

m4 1.4.13 যথেষ্ট নতুন এবং সম্ভবত সমস্যাটি নেই। আপনি যে সেটআপগুলিতে সতর্কতা দেখেন না সেগুলির মধ্যে কী আলাদা তা আপনি নির্ধারণ করতে পারেন?
উইলিয়াম পার্সেল

আমি আমার প্রশ্নের সাথে সে সম্পর্কিত কিছু তথ্য যুক্ত করেছি - আপনি কি প্রাসঙ্গিক কিছু ভাবতে পারেন? অটোটুলের ক্ষেত্রে আমি খুব বেশি জ্ঞানী নই।
দবির

সবেমাত্র লক্ষ্য করা গেছে - 32 বিট মেশিনগুলি অসুবিধাযুক্ত বলে মনে হচ্ছে।
dbeer

2

MacOS এক্স ব্যবহার করা হচ্ছে

sudo port install pkgconfig

সমাধান ছিল!


3
এই উত্তরটি পুরনো হয়ে গেছে, বন্দরের পরিবর্তে ব্রিউ ব্যবহার করুন
xiamx

2


ব্রা সহ ম্যাক ওএস এক্স এল অধিনায়নে , চেষ্টা করুন: ব্রিউ ইনস্টল করুন পিকেগকনফিগ

এটি আমার পক্ষে কাজ করেছে।


2

এই সমস্যার সম্ভাব্য দুটি কারণ রয়েছে:

  1. অ্যাকোকল ইনস্টল করেনি।
    সমাধান b libtool ইনস্টল করুন

    • উবুন্টুর জন্য: sudo apt-get install libtool
    • সেন্টোসের জন্য: sudo yum install libtool
  2. LIBTOOL.m4 যাওয়ার পথটি ত্রুটি।
    সমাধান:

    1. aclocal --print-ac-dirঅ্যাকোকোকালের বর্তমান পথটি পরীক্ষা করতে ব্যবহার করুন । (এটি সাধারণত "/ usr / share / aclocal" বা "/ usr / share / aclocal" হওয়া উচিত)
    2. তারপরে * .m4 ফাইল আছে কিনা তা পরীক্ষা করে দেখুন।
    3. যদি তা না হয় তবে এই পথের সাথে সম্পর্কিত * .m4 ফাইলগুলি সিপি করুন ((সম্ভবত cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/বা cp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/)

আশা করি এটা সাহায্য করবে


1

উবুন্টুতে আমার একই সমস্যা ছিল ( error: possibly undefined macro: AC_MSG_ERROR) তবে উপরের উত্তরগুলি আমার পক্ষে কার্যকর হয়নি। আমি সমাধানটি এখানে পেয়েছি

এই কৌশলটি করেছেন:

$ LANG=C LC_CTYPE=C ./autogen.sh

1

আমি ম্যাকের উপর পিকেজি-কনফিগার ইনস্টল করার পরে আমার সমস্যা সমাধান করা হয়েছে (বার্ক ইনস্টল পিকেজি-কনফিগার)



0

স্থানীয়ভাবে সংজ্ঞায়িত ম্যাক্রোর পক্ষে যুক্তিগুলিতে যখন আমি একটি ভুলে গিয়েছিলাম তখন আমার সাথে এটি ঘটেছিল। এটি বের করার চেষ্টা করার সময় ব্যয় করা সময় (অটোটুলগুলির সাথে সবেমাত্র পরিচিত) ...

AC_CHECK_MACRO([Foo]
    AC_LOCAL_DO([......

হওয়া উচিত ছিল

AC_CHECK_MACRO([Foo],      # <-- Notice comma, doh!
    AC_LOCAL_DO([......

দেখে মনে হচ্ছে এটির আমাকে একটি ত্রুটি বা অন্যটি দেওয়া উচিত ছিল, তবে আমি মনে করি ম্যাক্রো প্রসেসর হওয়ায় এটি কেবল যা যা বলেছিল তা করতে পারে।


0

আমি এই মাত্র কয়েক ঘন্টা হারিয়েছি। আমার উপসংহার:

  • সংস্করণ এবং অন্য যে কোনও স্থানীয় অবস্থার উপর নির্ভর করে, অটোকনফ এসি_এমএসজি_ইআরআরআর সম্পর্কে বার্তাটি অপরিবর্তিত করে যখন এটি কোনও অপরিজ্ঞাত ম্যাক্রোর মুখোমুখি হয় when । AC_MSG_ERROR হ'ল একটি লাল রঙের হেরিং। অপরিজ্ঞাত ম্যাক্রোর কারণগুলি হ'ল:
    • ফাইলটিতে ম্যাক্রো নামের একটি টাইপো, বা একটি স্থানীয় ম্যাক্রো যা টারবাল দিয়ে প্রেরণ করা হয়নি
    • একটি প্যাকেজ অনুপস্থিত যা অটোকনক ম্যাক্রোগুলির একটি সেট নিয়ে এসেছিল, যার মধ্যে একটি ফাইলটিতে ব্যবহৃত হয়। pkg-config প্রায়শই অনুপস্থিত থাকে (কারণ, যেমন, PKG_CHECK_MODULES) তবে এটি অন্য কোনও প্যাকেজ হতে পারে যা প্রয়োজনীয় তবে অনুপস্থিত ম্যাক্রো সরবরাহ করে। দু: খজনক বিষয়টি হ'ল, এটি এখনও বিদ্যমান নয় এমন কনফিগার স্ক্রিপ্টটি হারিয়ে যাওয়া প্যাকেজটির জন্য যাচাই করতে পারে before

0

Hাবিল্ডের সাথে amtk এবং utth pmock তৈরি করার চেষ্টা করার সময় আমারও একই সমস্যা ছিল।

আমার অটোকনফ-সংরক্ষণাগারটির সাম্প্রতিকতম সংস্করণটি ইনস্টল করা দরকার। নির্দেশাবলী https://github.com/autoconf-archive/autoconf-archive/blob/master/README-maint এ রয়েছে । আমি sudo make installশেষে একটি অতিরিক্ত করেছি ।

শেষ পদক্ষেপটি ছিল আমার আপডেট করা ACLOCAL_PATH:

echo 'export ACLOCAL_PATH=$ACLOCAL_PATH:/usr/local/share/aclocal' >> ~/.bashrc

এর পরে source ~/.bashrc, সমস্ত ম্যাক্রোগুলি অবশেষে খুঁজে পাওয়া গেল এবং বিল্ডগুলি সফল হয়েছিল।


-1

একটি নতুন ইনস্টল করা মেশিনে ম্যাকপোর্টস পোর্ট "ওপেনকডি" (গিট রিপোজিটরিটি ব্যবহার করার জন্য স্থানীয়ভাবে পোর্টফিলাইটি সংশোধিত) নিয়ে আমার একই সমস্যা ছিল।

স্থায়ী সমাধান সহজ, পোর্টফিলিতে pkgconfig এর উপর নির্ভরতা নির্ধারণ করুন: depend_lib-append পোর্ট: pkgconfig

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