问题标签 [ld]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1094 浏览

c - 为我的操作系统移植 NewLib:一些问题

我正在尝试为我的操作系统移植 NewLib(我正在关注本教程: http ://wiki.osdev.org/Porting_Newlib ),我有一些问题。

  • 一旦 LibGloss 完成并编译,我什么时候必须使用已创建的 libnosys.a?是我何时编译我的 main.c 吗?

    /li>
  • 我的 crt0.c 完成了。我必须“将它作为第一个对象链接”。我怎样才能做到这一点?是这样的吗?

    /li>

感谢您的回答!

0 投票
0 回答
2437 浏览

android - 将fftw3静态链接到共享库

我正在开发一些适用于 Android 的音高校正软件,我希望使用 NDK 让 fftw3 在 Android 上工作。

音高校正库(talentedhack,http://code.google.com/p/talentledhack/以防万一有人想知道)依赖于 fftw3,所以我尝试将 fftw3 编译为静态库,然后将其链接到共享的有才华的黑客图书馆。目前我已经将 fftw3 构建为静态库 libfftw3.a,但我不断收到类似这样的未解决的参考错误

使用 ndk-build 编译有才华的黑客共享库时。不过,它似乎正确地拾取了文件,这令人费解。

我的 Android.mk 文件的相关部分如下所示:

从项目顶层调用 ndk-build 时失败的命令是:

/opt/android-ndk-linux/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc -nostdlib -Wl,-soname,libtalentedhack.so -Wl,-shared,-Bsymbolic /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/circular_buffer.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/fft.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/formant_corrector.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/lfo.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_detector.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_shifter.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/pitch_smoother.o /path/to/project/bin/ndk/local/armeabi/objs/talentedhack/quantizer.o /path/to/project/ndk/local/armeabi/objs/talentedhack/talentedhack.o -Wl,--whole-archive -Wl,--no-whole-archive /path/to/project/bin/ndk/local/armeabi/libfftw3.a /opt/android-ndk-linux/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/libgcc.a /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libc.so /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libstdc++.so /opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib/libm.so -Wl,--no-undefined -Wl,-z,noexecstack -L/opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib -llog -Wl,-rpath-link=/opt/android-ndk-linux/build/platforms/android-8/arch-arm/usr/lib -o /path/to/project/bin/ndk/local/armeabi/libtalentedhack.so

我不确定这是否是 fftw3 的问题,因为我遵循了他们关于移植的说明(获取源文件的子集,手动配置并构建它们),因为系统实际上没有 fftwf_execute 或任何由于使用了一些花哨的宏,或者如果 Android NDK 构建系统无法正确处理静态库,则在任何头文件中定义的其他函数(我可以告诉)。任何帮助都将不胜感激。

0 投票
1 回答
1002 浏览

gcc - 跨 gcc crti.o

从头开始按照 Cross linux 上的说明进行了 powerpcgcc-final操作,但由于出现ld错误,我无法通过这个阶段crti.o: no such file or directory

我的工具链分为两个目录:/opt/builder/toolsand /opt/builder/cross-tools,第一个目录是 Linux 头文件和 eglibc,第二个目录是 cross-utilities。我还为这些目录创建了/tools链接/cross-tools

我试过了,“库”部分/cross-tools/bin/powerpc-unknown-linux-gcc -print-search-path有一个目录。/opt/builder/tools/lib但是 gcc 将crt....o对象名称传递给ld没有目录前缀(我使用 strace 来找出它)。

这些crt....o文件很好,因为当我将它们复制到目录hello.c并对其进行编译时,一切正常。

你能给点建议吗?

提前致谢,

谢尔盖·诺莫夫。

0 投票
4 回答
1360 浏览

gcc - 强制 gcc 使用一个链接器而不是另一个链接器

最近我一直在开发 OS X。有一段时间事情进展得很顺利,直到不知何故ld进入我的系统,现在gcc无法使用dyld. 此外,我所有的共享库都是*.dylib格式的,而 ld 顽固地忽略了那里的存在。如果我mv从 ld PATH,gcc 只是抱怨它找不到 ld。

请帮助我让 gcc 回到正轨并使用它应该使用的东西。

0 投票
4 回答
3762 浏览

c++ - 链接时的 C++ 未定义引用

我想知道是否有人可以帮助我,因为我已经为此挠头两天了。

我已经完成了编译,当试图在 linux 上链接源代码时得到未定义的引用

编译使用,

g++ -g -I/u01/kasunt/workspace/corelibCORBA/include -I/u01/kasunt/workspace/corelibCORBA/installed_components/include -I/u01/kasunt/workspace/corelibCORBA/idl -I/u01/kasunt/workspace/ corelibCORBA/src/Server -I/u01/kasunt/workspace/corelibCORBA/installed_components/idl -I/u01/kasunt/workspace/corelibCORBA/installed_components/src/Server -I/u01/kasunt/workspace/corelibCORBA/installed_components/imake - DNARROWPROTO -I 。-I/u01/kasunt/workspace/corelibCORBA/installed_components/include -W -Wall -Wpointer-arith -pipe -D_POSIX_THREADS -D_POSIX_THREAD_SAFE_FUNCTIONS -g -O -I/u01/kasunt/workspace/corelibCORBA/include -g -O -I /u01/kasunt/workspace/corelibCORBA/include -fvisibility=hidden -fvisibility-inlines-hidden -DACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS=1 -W -Wall -Wpointer-arith -ggdb -pipe -Wall -g -D__linux__ -D__x86__ -rdynamic -D_REENTRANT -DTAO_HAS_INTERCEPTORS =0 -DTAO_HAS_VALUETYPE=1 -D_REENTRANT -DACE_HAS_AIO_CALLS -D_GNU_SOURCE -I/usr/local/ACE+TAO+CIAO-5.7.9/ACE_wrappers -I/usr/local/ACE+TAO+CIAO-5.7.9/ACE_wrappers/TAO -I/usr/local/ACE+TAO+CIAO-5.7.9/ACE_wrappers/TAO/orbsvcs -DACE_HAS_EXCEPTIONS -D__ACE_INLINE__ -c -o TestSeqWrapper.o TestSeqWrapper.cppcppcpp

链接使用,

g++ -o TestSeqWrapper TestSeqWrapper.o -g -L/u01/kasunt/workspace/corelibCORBA/lib -L/u01/kasunt/workspace/corelibCORBA/installed_components/lib -g -O -Wl,-E -L/usr/local /ACE+TAO+CIAO-5.7.9/ACE_wrappers/lib -L/usr/local/ACE+TAO+CIAO-5.7.9/ACE_wrappers/lib -L/usr/local/ACE+TAO+CIAO-5.7.9 /ACE_wrappers/TAO/tao -L/u01/kasunt/workspace/corelibCORBA/installed_components/idl -lcorelibCORBA -lcorelibCORBA /u01/kasunt/workspace/corelibCORBA/installed_components/lib/corelibCORBA3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components /lib/CorbaController3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/EConcurrency3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/corelibLogger3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib /LeakTracker3r。lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/trace3r.lib -lDefineTimeZone /u01/kasunt/workspace/corelibCORBA/installed_components/lib/timestamp3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/ApplConfig3r。 lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/appl3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/logstream3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/disklog3r.lib / u01/kasunt/workspace/corelibCORBA/installed_components/lib/timeout3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/getpnam3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/config3r.lib /u01/ kasunt/workspace/corelibCORBA/installed_components/lib/strl3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/string3r。lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/command3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/cmdargs3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/CppUtils3r.lib / u01/kasunt/workspace/corelibCORBA/installed_components/lib/BuildTag3r.lib /u01/kasunt/workspace/corelibCORBA/installed_components/lib/exception3r.lib -lCorbaIdl -lTAO_Valuetype -lTAO_PortableServer -lTAO_IORTable -lTAO_AnyTypeCode -lTAO_CosEvent -lTAO_CosNaming -lTAO -lACE

做库的 nm 我可以看到上面的构造函数包括在内,

源代码中的违规行(第 165 行),SeqWrapper() : var_( new SequenceType ), size_( 0 ) { }

部分代码,

TestSeqWrapper.cpp 的源代码(我已经删除了大部分不需要的东西以减少混乱)

并且您可以看到我在链接选项中指定了共享库(以粗体显示)。我最初认为这可能是由于某种依赖,并将库标志移到开头没有影响。

我很感激。

0 投票
4 回答
11914 浏览

assembly - 如何在不使用 gcc 的情况下将使用 C 标准库的气体汇编程序与 ld 链接?

作为一个练习,以更准确地了解 c 程序如何工作以及程序必须存在什么最低级别的内容才能使程序能够使用 libc,我自己尝试使用 gas 和 ld 主要在 x86 汇编中进行编程。

作为一个有趣的小挑战,我已经成功地组装和链接了几个链接到不同的自制动态库的程序,但是我无法在不直接使用 gcc 的情况下从头开始编写程序以使用 libc 函数调用。

我了解各个 c 库函数的调用约定,并且已经通过使用 objdump 和 readelf 彻底检查了从 gcc 编译出来的程序,但还没有得到任何地方,至于要在 gas 汇编文件中包含哪些信息以及要调用哪些参数在 ld 中成功链接到 libc。有人对此有任何见解吗?

我在 x86 机器上运行 Linux。

0 投票
1 回答
2834 浏览

g++ - LD:与 STL 库链接

我试图编译 OpenCV 的 VideoCapture 示例。当我编译它时,我得到以下输出:

(顺便说一句,gpp 是 g++ -lhighgui -lcv -lcxcore 的别名)

因此,我尝试使用“gpp --enable-auto-import”进行编译,但 g++ 无法识别此选项。所以,我试着像这样编译:

而且我遇到了同样的错误以及关于 STL 函数的许多其他错误,表明它没有与 STL 链接:

最后,当我这样编译时:

这一次,我只有 STL 错误。VideoCapture 错误消失了!所以我想我解决了这个问题。唯一的事情是:如何使 ld 将我的程序与 STL 库链接??????

提前致谢

0 投票
2 回答
6882 浏览

gcc - gcc/ld - 使用来自 glibc.2.6 的 __isoc99_sscanf@@GLIBC_2.7 符号创建一个新的 libc.so

我有一个应用程序,当我尝试运行它时会出错:

但它需要的 glibc 2.7 中唯一的符号是

我想用这个符号写一个小的单一函数“库”作为 __sscanf() 的别名

我怎样才能用 gcc/ld 做到这一点?

我的变体不被接受,因为“@@”符号

第二个我的变种是

但它以来自链接器的“未找到符号 __isoc99_sscanf@@GLIBC_2.7 的版本节点”错误结尾。

0 投票
3 回答
19741 浏览

c++ - C++:编译错误 - “不会创建 .eh_frame_hdr 表”

我应该使用数据分析程序进行物理实验。我无法编译它。

代码很旧,与我能找到的当前 GCC 版本并不真正兼容。为了让事情变得更耗时,我从一个修改了所有 makefile 以使其在 Mac 上编译的人那里获得了代码。我没有 C++ 经验,但是通过手册页、谷歌和耐心,我已经修复了很多错误,但即使经过一周的尝试和谷歌搜索,我仍然坚持这个错误。

我相信相关的错误信息如下:

可能是什么原因,有什么补救措施?

libCommandLineInterface.so之前由我编译,没有任何明显的错误消息:

我的 g++ 版本是g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3amd64。

正如我所说,我没有使用 C++ 的经验,所以也许我天真的 Makefile 修改已经破坏了一些东西。我缺乏经验也使我不知道还需要哪些其他信息来帮助我,但我很乐意回复。

0 投票
1 回答
3719 浏览

oracle - gcc、64 位、oracle、solaris

谁能给我一个想法为什么ld在这里不能正常工作

(由于此错误,此长命令已从configure其执行不正确)

UPD

blabla.c: _