簡體   English   中英

GCC v4.9.2上無法識別的命令行選項'-rdynamic'

[英]unrecognized command line option ‘-rdynamic’ on GCC v4.9.2

我在Windows 7 64位上的Cygwin下使用GCC v4.9.2,但是在嘗試編譯uWSGI時遇到問題

我收到的錯誤是-

gcc: error: unrecognized command line option ‘-rdynamic’

GCC版本輸出-

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/lto-wrapper.exe
Target: x86_64-pc-cygwin
Configured with: /cygdrive/i/szsz/tmpp/gcc/gcc-4.9.2-3.x86_64/src/gcc-4.9.2/configure --srcdir=/cygdrive/i/szsz/tmpp/gcc/gcc-4.9.2-3.x86_64/src/gcc-4.9.2 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --libdir=/usr/lib --datarootdir=/usr/share --docdir=/usr/share/doc/gcc --htmldir=/usr/share/doc/gcc/html -C --build=x86_64-pc-cygwin --host=x86_64-pc-cygwin --target=x86_64-pc-cygwin --without-libiconv-prefix --without-libintl-prefix --libexecdir=/usr/lib --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --enable-bootstrap --enable-__cxa_atexit --with-dwarf2 --with-tune=generic --enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm --enable-libquadmath --enable-libquadmath-support --enable-libssp --enable-libada --enable-libgcj-sublibs --disable-java-awt --disable-symvers --with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as --with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix --without-libintl-prefix --with-system-zlib --enable-linker-build-id
Thread model: posix
gcc version 4.9.2 (GCC)

我正在使用CFLAGS="-Wno-error" make調用構建。

我不確定為什么會收到此錯誤,正如我從此處的文檔中看到的那樣,存在-rdynamic標志。

我想念什么?

我想我知道了...

這是我的筆記本電腦( W7 x64上的Cygwin 2.831 x86 )發生的情況:

gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-cygwin/4.8.2/lto-wrapper.exe
Target: i686-pc-cygwin
Configured with: /cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-1/src/gcc-4.8.2/configure --srcdir=/cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-1/src/gcc-4.8.2 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --libdir=/usr/lib --datarootdir=/usr/share --docdir=/usr/share/doc/gcc -C --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-pc-cygwin --without-libiconv-prefix --without-libintl-prefix --enable-shared --enable-shared-libgcc --enable-static --enable-version-specific-runtime-libs --enable-bootstrap --disable-__cxa_atexit --with-dwarf2 --with-arch=i686 --with-tune=generic --disable-sjlj-exceptions --enable-languages=ada,c,c++,fortran,java,lto,objc,obj-c++ --enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm --enable-libquadmath --enable-libquadmath-support --enable-libssp --enable-libada --enable-libjava --enable-libgcj-sublibs --disable-java-awt --disable-symvers --with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as --with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix --without-libintl-prefix --with-system-zlib
Thread model: posix
gcc version 4.8.2 (GCC)

當我通過-rdynamic

gcc -rdynamic
gcc: fatal error: no input files
compilation terminated.

-rdynamic1相比:

gcc -rdynamic1
gcc: error: unrecognized command line option ‘-rdynamic1’
gcc: fatal error: no input files
compilation terminated.

我的gccman頁中提到了它(我不確定那有多重要),但是gcc -v --help不在鏈接器特定選項下顯示它。 我認為gcc的配置方式可能有所不同,但是我沒有看到任何重要的差異(都指定了--with-gnu-ld似乎相關)。

然后,我下載了4.8.24.9.2源代碼並開始搜索和比較,但是我再也找不到任何東西(確實可以廣泛擴展搜索:))。

但是在瀏覽configure文件時,我發現可能存在一些相關之處,然后我檢查了ld命令行選項,並認為我有另一種選擇:

可以使用-Wl,--export-all-symbols -rdynamic -Wl,--export-all-symbols代替-rdynamic 這對我-rdynamic (這不太相關,因為-rdynamic也對我-rdynamic ,與您的情況不同:))

您提供的鏈接顯示:

-rdynamic

將標志-export-dynamic傳遞到支持它的目標上的ELF鏈接器。 這指示鏈接器將所有符號(不僅是已使用的符號)添加到動態符號表中。 對於dlopen的某些用途或為了從程序內部獲取回溯,此選項是必需的。

(已添加重點。)

Cygwin是否使用ELF格式的目標文件? 似乎不太可能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM