gcc --as- आवश्यक लिंकर ध्वज काम नहीं कर रहा है


1

मेरे पास Gentoo के साथ दो कंप्यूटर हैं, दोनों AMD64 पर। मैं निम्नलिखित कार्यक्रम बनाने की कोशिश करता हूं:

int main() {tgetent();}

संकलन करने का आदेश है:

 gcc -v 1.c -Wl,--as-needed -lncurses

एक कंप्यूटर पर इसे फ़ंक्शन नहीं मिल सकता है जबकि दूसरे पर यह हो सकता है। बिनाआस-आवश्यकता के ध्वज यह ठीक से जोड़ता है। संकलक और बिनुटिल के संस्करण समान हैं।

यहाँ पहली और दूसरी मशीन पर लॉग हैं:

अंतर्निहित ऐनक का उपयोग करना।
COLLECT_GCC = / usr / x86_64-पीसी-linux-जीएनयू / जीसीसी-bin / 4.7.3 / जीसीसी
COLLECT_LTO_WRAPPER = / usr / libexec / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 / LTO-आवरण
लक्ष्य: x86_64-pc-linux-gnu
के साथ कॉन्फ़िगर किया गया: /var/tmp/portage/sys-devel/gcc-4.7.3-r1/work/gcc-4.7.3/configure --host = x86_64-pc-linux-gnu --build - x86_64-pc- linux-gnu --prefix = / usr --bindir = / usr / x86_64-pc-linux-gnu / gcc-bin / 4.7.3 --includedir = / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 / में शामिल हैं - ददातिर = / usr / शेयर / gcc-data / x86_64-pc-linux-gnu / 4.7.3 --mandir = / usr / share / gcc-data / x86_64-pc-linux-gnu / 4.7.3 / आदमी --infodir = / usr / शेयर / gcc-data / x86_64-pc-linux-gnu / 4.7.3 / info --with-gxx-शामिल-dir = / usr / lib / gcc / x86_64- pc-linux-gnu / 4.7.3 / इसमें / g ++ - v4 --with-python-dir = / share / gcc-data / x86_64-pc-linux-gnu / 4.7.3 / pyon --enable-languages ​​= c , c ++, फोरट्रान --enable- अप्रचलित --enable-Secureplt --disable-werror --with-system-zlib --enable-nls --without-शामिल-gettext --enable-check-release --with-bugurl = https: //bugs.gentoo.org/ --with-pkgversion = 'Gentoo 4.7.3-r1 p1.4, pie-0.5.5'-enable-libstdcxx-time --enable-shared-enable-threads = posix --enable -__ cxa_atexit --enable-clocale = gnu --disable-multilib - स्मिथ-मल्टीबिल-सूची = m64 --disable-altivec --disable-fixed-point --enable-target = सभी --disable-libgcj --enable-libgomp --disable-libmudflap --disable-libssp --enable-lto --ithout-cloog --without-ppl
थ्रेड मॉडल: पॉज़िक्स
gcc संस्करण ४.२.३ (Gentoo 4.7.3-r1 p1.4, पाई-0.5.5) 
COLLECT_GCC_OPTIONS = '- v' '-mtune = सामान्य' '-march = x86-64'
 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -quiet -v 1.c -quiet -dumpbase 1.c -mtune = generic -march = x86-64 -auxbase 1 -version - o /tmp/cckCeNIy.s
GNU C (Gentoo 4.7.3-r1 p1.4, पाई-0.5.5) संस्करण 4.7.3 (x86_64-pc-linux-gnu)
    जीएनयू सी संस्करण 4.7.3, जीएमपी संस्करण 5.1.2, एमपीएफआर संस्करण 3.1.2, एमपीसी संस्करण 1.0.1 द्वारा संकलित
GGC के आंकड़े: --पारम ggc-min-extension = 100-param ggc-min-heapsize = 131072
कोई भी असंगत निर्देशिका की अनदेखी "/ usr / स्थानीय / शामिल"
नॉनवेज डायरेक्टरी को अनदेखा करना "/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/include-
# खोज "..." यहां से शुरू होती है:
# खोज को यहां शुरू करें:
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include-fixed
 / Usr / शामिल
खोज सूची का अंत।
GNU C (Gentoo 4.7.3-r1 p1.4, पाई-0.5.5) संस्करण 4.7.3 (x86_64-pc-linux-gnu)
    जीएनयू सी संस्करण 4.7.3, जीएमपी संस्करण 5.1.2, एमपीएफआर संस्करण 3.1.2, एमपीसी संस्करण 1.0.1 द्वारा संकलित
GGC के आंकड़े: --पारम ggc-min-extension = 100-param ggc-min-heapsize = 131072
संकलक निष्पादन योग्य चेकसम: 39edf3479a880e47daebbbc3740ccab0
COLLECT_GCC_OPTIONS = '- v' '-mtune = सामान्य' '-march = x86-64'
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/as-v-64-o/ tmp / cckazMHs.o /tmp/cckCeNIy.s
GNU कोडांतरक संस्करण 2.23.2 (x86_64-pc-linux-gnu) BFD संस्करण (GNU Binutils) 2.23.2 का उपयोग करते हुए
COMPILER_PATH = / usr / libexec / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / libexec / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / libexec / जीसीसी / x86_64 -पीसी-linux-जीएनयू /: / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू /: / usr / lib / जीसीसी /x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/
LIBRARY_PATH = / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /../../../ ../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../ .. /../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../:/lib/ : / usr / lib /
COLLECT_GCC_OPTIONS = '- v' '-mtune = सामान्य' '-march = x86-64'
 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/collect2 --eh-फ़्रेम-एचडीआर -m elf_x86_64 -dynamic-linker-lib64/ld-linux-x86-64.so.2 / usr /lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crt1.o/usr/lib/gcc/x86_64-pc-linux-gnu/4.7 .3 /../../../../ lib64 / crti.o/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/crtbegin.o -L / usr / lib / gcc / x86_64-pc-linux-gnu/4.7.3 -L / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 /../../../// lib64 -L / lib /../lib64 -L / usr / lib /../ lib64 -L / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 /../../../..//8686-64 -pc-linux-gnu / lib -L / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 /../../ .. /tmp/cckazMHs.o --as-need -lncurses -lgcc --as-need -lgcc_s --no-as-need -lc -lgcc --as-need -lgcc_s - कोई जरूरत नहीं /usr/lib/gcc/x86-64-pc-linux-gnu/4.7 .3 / crtend.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3//../../..///ibib64/crtn.o
अंतर्निहित ऐनक का उपयोग करना।
COLLECT_GCC = / usr / x86_64-पीसी-linux-जीएनयू / जीसीसी-bin / 4.7.3 / जीसीसी
COLLECT_LTO_WRAPPER = / usr / libexec / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 / LTO-आवरण
लक्ष्य: x86_64-pc-linux-gnu
के साथ कॉन्फ़िगर किया गया: /home_old/tmp/portage/sys-devel/gcc-4.7.3-r1/work/gcc-4.7.3/configure --host = x86_64-pc-linux-gnu :build = x86_64-pc- linux-gnu --prefix = / usr --bindir = / usr / x86_64-pc-linux-gnu / gcc-bin / 4.7.3 --includedir = / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 / में शामिल हैं - ददातिर = / usr / शेयर / gcc-data / x86_64-pc-linux-gnu / 4.7.3 --mandir = / usr / share / gcc-data / x86_64-pc-linux-gnu / 4.7.3 / आदमी --infodir = / usr / शेयर / gcc-data / x86_64-pc-linux-gnu / 4.7.3 / info --with-gxx-शामिल-dir = / usr / lib / gcc / x86_64- pc-linux-gnu / 4.7.3 / इसमें / g ++ - v4 --with-python-dir = / share / gcc-data / x86_64-pc-linux-gnu / 4.7.3 / pyon --enable-languages ​​= c , c ++ --enable- अप्रचलित --enable-Secureplt --disable-werror --with-system-zlib --enable-nls --without-शामिल-gettext --enable-check = release - साथ-साथ-बगुरल = https : //bugs.gentoo.org/ --with-pkgversion = 'Gentoo 4.7.3-r1 p1.4, पाई-0.5.5'-enable-libstdcxx-time --enable- साझा -enable-threads = posix --enable -__ cxa_atexit --enable-clocale = gnu --enable-multilib --wil-multilib- सूची = m32, m64 -वैलिव -डिसिबल-फिक्स्ड-पॉइंट -एन्नेबल-टारगेट्स = ऑल -डिसिबल-लिबग्ज - जेनेबल-लिबगोमैप - डिएडेबल-लिबमुड्लैप -डिसिबल-लिबस्स्प्स -डिसिबल-लिक्वाडमैथ - जेनेबल-लोटो --without- cloog --without-ppl
थ्रेड मॉडल: पॉज़िक्स
gcc संस्करण ४.२.३ (Gentoo 4.7.3-r1 p1.4, पाई-0.5.5) 
COLLECT_GCC_OPTIONS = '- v' '-mtune = सामान्य' '-march = x86-64'
 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -quiet -v 1.c -quiet -dumpbase 1.c -mtune = generic -march = x86-64 -auxbase 1 -version - o /tmp/cc830JX6.s
GNU C (Gentoo 4.7.3-r1 p1.4, पाई-0.5.5) संस्करण 4.7.3 (x86_64-pc-linux-gnu)
    जीएनयू सी संस्करण 4.7.3, जीएमपी संस्करण 5.1.2, एमपीएफआर संस्करण 3.1.2, एमपीसी संस्करण 1.0.1 द्वारा संकलित
GGC के आंकड़े: --पारम ggc-min-extension = 100-param ggc-min-heapsize = 131072
नॉनवेज डायरेक्टरी को अनदेखा करना "/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/include-
# खोज "..." यहां से शुरू होती है:
# खोज को यहां शुरू करें:
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include
 / Usr / स्थानीय / शामिल
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include-fixed
 / Usr / शामिल
खोज सूची का अंत।
GNU C (Gentoo 4.7.3-r1 p1.4, पाई-0.5.5) संस्करण 4.7.3 (x86_64-pc-linux-gnu)
    जीएनयू सी संस्करण 4.7.3, जीएमपी संस्करण 5.1.2, एमपीएफआर संस्करण 3.1.2, एमपीसी संस्करण 1.0.1 द्वारा संकलित
GGC के आंकड़े: --पारम ggc-min-extension = 100-param ggc-min-heapsize = 131072
संकलक निष्पादन योग्य चेकसम: d486e53a9a5b8aa6182027c91a2ba0e6
COLLECT_GCC_OPTIONS = '- v' '-mtune = सामान्य' '-march = x86-64'
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/as-v-64-o/ tmp / ccl4EIq9.o /tmp/cc830JX6.s
GNU कोडांतरक संस्करण 2.23.2 (x86_64-pc-linux-gnu) BFD संस्करण (GNU Binutils) 2.23.2 का उपयोग करते हुए
COMPILER_PATH = / usr / libexec / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / libexec / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / libexec / जीसीसी / x86_64 -पीसी-linux-जीएनयू /: / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू /: / usr / lib / जीसीसी /x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/
LIBRARY_PATH = / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /: / usr / lib / जीसीसी / x86_64-पीसी-linux-जीएनयू / 4.7.3 /../../../ ../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../ .. /../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../:/lib/ : / usr / lib /
COLLECT_GCC_OPTIONS = '- v' '-mtune = सामान्य' '-march = x86-64'
 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/collect2 --eh-फ़्रेम-एचडीआर -m elf_x86_64 -dynamic-linker-lib64/ld-linux-x86-64.so.2 / usr /lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crt1.o/usr/lib/gcc/x86_64-pc-linux-gnu/4.7 .3 /../../../../ lib64 / crti.o/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/crtbegin.o -L / usr / lib / gcc / x86_64-pc-linux-gnu/4.7.3 -L / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 /../../../// lib64 -L / lib /../lib64 -L / usr / lib /../ lib64 -L / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 /../../../..//8686-64 -pc-linux-gnu / lib -L / usr / lib / gcc / x86_64-pc-linux-gnu / 4.7.3 /../../ .. /tmp/ccl4EIq9.o --as-need -lncurses -lgcc --as-need -lgcc_s --no-as-need -lc -lgcc --as-need -lgcc_s - कोई जरूरत नहीं /usr/lib/gcc/x86-64-pc-linux-gnu/4.7 .3 / crtend.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3//../../..///ibib64/crtn.o
/tmp/ccl4EIq9.o: फ़ंक्शन में 'मुख्य':
1. सी :(। पाठ + 0xa): `अशांत 'के लिए अपरिभाषित संदर्भ
collect2: error: ld ने 1 निकास स्थिति लौटा दी

क्या समस्या हो सकती है?


1
मैं आपके लिंकर और उसके डिफ़ॉल्ट विकल्प / सेटअप / विन्यास को देखूंगा। gcc वास्तव में एक नियंत्रक है जो क्रम में संकलक (cc) और लिंकर (ld) चलाता है। यह लिंकर के लिए -W विकल्प पास करता है। आप gcc के साथ संकलन करने का प्रयास कर सकते हैं, लेकिन फिर इसे जांचने के लिए हाथ से जोड़कर 'ld --trace --verbose --as-need -lncurses 1.o -o 1' ('gcc 1.c -o 1 के बाद) का सुझाव दें। o ') cmdline MAY में' -lncurses 'का प्लेसमेंट सफलता को प्रभावित करता है, ld मैन पेज ऑन-एल विकल्प और लाइन इफेक्ट्स में लोकेशन देखें।
लोर्निक्स

खैर, मैंने आगे खोदा है और यह पता चला है कि ncurses पैकेज दो प्रणालियों पर अलग-अलग संकलित करने के बाद था। मुझे मूर्ख। समस्या वाले सिस्टम पर nvi के लिए जरूरी फ्लैग टिनफ़ो का उपयोग था, और यह उन प्रतीकों को libtinfo में डाल देता है।
अनिकिपोह

मूर्ख भालू! ………
lornix
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.