与此相关,但不完全相同,我在Windows上使用CMake 2.8.x和VS2008 SP1构建了几个静态库。是否有办法仅通过CMake将所有现有静态库中的所有.obj文件重新链接到一个更大的单片库中,最好是通过add_libraryCMake函数或其他类似构造
我认为答案是“否”,因此我考虑过通过一个自定义命令,通过通常的add\u custom\u命令+add\u custom\u target方法,通过调用LINK.EXE时提供所有其他库.obj文件,手动构建库。但我发现这种方法存在一些问
嗨,我正在尝试安装一个新版本的zlib,我没有root权限,所以我只在本地安装它。系统安装是1.2.3,我尝试使用1.2.5
我喜欢
g++ -g myProg.cpp myOs.o -lpthread -IzlibInc/ -LzlibLib/ -lz -o myProg
使用ldd它说
ldd myProg
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c15800000)
libz.so.1 => /usr
我在为当前需要OpenCL的项目设置我的PC(Win 7 Ultimate 64 CPU AMD/GPU AMD)时遇到了一个奇怪的问题
我有MSYS,所以我正在与gcc合作开发mingw。我正在拼命地编译一个简单的工作,叫做openclexample
注意:包含“openclexample”的目录确实包含一个lib文件夹,包括重新实现的libOpenCL.a、OpenCL.lib和OVDecode64.lib
windows/system32中的OpenCL.dll
现在,当我尝试使用
$ g
我有不同的预编译版本的第三方库(Windows/Linux/Mac,32/64位)。它必须包含在项目文件中,以将在其他系统上编译的要求降至最低,因为我不能期望它在几年后可供下载。静态和动态版本都可用,但没有源代码
我应该如何在我的CMakeLists.txt中链接它,以便在所有系统上编译相关的main.cpp?它能在不同的Linux发行版上工作吗
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(ExampleProject)
LINK_DIRECTORIE
我有一个问题要问一个特定的F77库。它的名字是libminuit。可以从->下载。它提供了将理论模型与实验数据拟合的方法
下载包含F77源代码(许多文件)和一个makefile。生成文件用于生成库
我用f95代码编写了一个卡方函数,希望使用minuit库来实现最小化
这是我第一次使用fortran。我首先使用F77编译器生成库,然后使用F95编译器生成库
在这两种情况下,都找不到库
从生成库到编译和链接的整个过程是:
$ gfortran -c *.F
$ ar rcs libminuit.a
这是一篇文章,摘录自
在某些CPU上,特别是x86s,静态libgmp.a应该是
用于最大速度,因为共享libgmp.so中的PIC代码
将在每个函数调用和全局数据上产生少量开销
地址。对于许多项目来说,这将是微不足道的,但会持续很长时间
有一个好处
在此上下文中,PIC代码是什么意思?PIC代表什么
“PIC代码”中的“代码”一词是多余的
给定以下Fortran模块:
MODULE Test
IMPLICIT NONE
INTERFACE
INTEGER(c_int) FUNCTION process_(script, script_size) BIND(C, name = "process")
USE, INTRINSIC :: iso_c_binding, ONLY: c_int, c_char
CHARACTER(c_char), INTE
TLDR我试图阅读clangllvm文档以找到通过库路径的方法,但没有成功。然后我搜索并找到了一个解决方案。我很好奇在哪里可以找到我的解决方案的文档
详细信息和原因
我试图在我的catalina上运行ruby包,但遇到了以下错误:
ld: library not found for -lssl
我使用brew安装openssl重新安装了openssl,然后brew链接openssl收到了以下响应:
Warning: Refusing to link macOS provided/shadowe
标签: Linker
elfldinitialization
我正在使用自定义链接器脚本将内核映像分为两部分。第一个是普通代码和数据,第二个是初始化代码和不再需要时要丢弃的数据。初始化部分也不像内核本身那样在地址空间之间共享,因此,如果fork()仍然存在(它处于开发的早期阶段),那么它会在fork()上复制
我已经分配了一个小内核堆栈在引导时使用,但是从我所看到的,我只能将它放在.bss部分,在那里它在地址空间之间共享,或者放在init区域,在那里它不能作为未初始化的数据存储。我想将它作为未初始化的数据存储在映像的init部分,以便每个进程都有自己的副本
我将此项目移植到VC++2010(在不同的文件夹中),现在链接步骤失败,并显示以下消息:
错误3错误LNK1181:无法打开输入文件“opends60.lib”
所以我想我需要将库从2008项目文件夹的某个地方复制到2010项目文件夹。问题是-在2008年项目文件夹或我硬盘上的任何地方都找不到该库!!!2008年的项目是如何联系在一起的,这是一个谜,但不知怎么的,确实如此。从2008项目中删除此库会导致大量未解决的外部问题,因此链接器会在某个地方找到它
问题:有没有办法找到VC++2008中的链
我在Visual2005中使用CMake生成了一个项目,每次我按F5键,链接器都会重新链接对象,即使没有进行任何修改。我读过其他类似问题,但解决方法是:
窗户的时间不对。它使可执行文件在将来随着时间而创建。或
链接器和编译器创建的PDB具有相同的名称
我已经检查过了,我没有这个问题。此外,我还有另一个项目解决方案(不是由CMake生成的),它运行良好。我检查了每个项目的属性,它们是相似的
这是BuildLog.htm中生成的输出:
构建日志
开始构建:项目:remote4,配置:TTecDebu
因此,我正在编译libgstreamermm-0.10的示例,我遇到了一个与CMake有关的问题
对于默认安装在我的系统上的libgstreamermm-0.10版本,示例SEGFULTS。好的,所以我得到了最新的源代码,并将它们安装到/usr/local上,得到了新的示例。一切看起来都很好
g++ main.cc player_window.cc -o test `pkg-config --cflags --libs gtkmm-3.0` `pkg-config --cflags --libs
我正在开发一个Fortran程序prog1和两个Fortran库lib1和lib2prog1依赖于lib1和lib2,lib1也依赖于lib2。目录结构可能如下所示:
prog1
|- lib2
|- lib1
|- lib2
在某些情况下,我希望prog1使用与lib1不同的lib2版本。但是,如果静态库lib1.a包含lib2中的对象文件,则链接器会给出如下错误
./lib1/lib1.a(lib2_module.o): In function `__lib2_module_MOD_
标签: Linker
g++mingwstatic-librariesld
我可能从根本上误解了MinGW g++.exe/ld.exe的“-static”选项,但我的目标是在构建项目时将必要的库作为静态库而不是动态库,这样我就可以在没有大量DLL的情况下发布可执行文件(.exe)
我的版本是:
gcc version 4.6.2 (GCC)
GNU ld (GNU Binutils) 2.22
我在过去的五小时里搜索了所有的(包括&和StAcExpLoad),并且似乎无法解决这个问题(但是我在VisualC++中已经做了类似的构建。我对MinGW来说是新的,而且没有
尝试将某些内容链接到LLVMSupport时出现了非常奇怪的错误:
C:/projects/builds/LLVM-3.3/lib/../lib/libLLVMsupport.a(Signals.cpp.obj):Signals.cpp:(.text+0x524): undefined reference to `__imp_SymSetOptions'
C:/projects/builds/LLVM-3.3/lib/../lib/libLLVMsupport.a(Signals.cpp.obj
我在试图编译程序时遇到一个未解决的符号错误,它抱怨无法找到\uuuDSO\uHandle。此函数通常在哪个库中定义
以下是libstdc++.so.6上的nm的结果吗
我试图链接到它,但错误仍然发生
nm libstdc++.so.6 | grep dso
00000000002fc480 d __dso_handle
\uu dso\u handle是一个“防护装置”,即
实际上,你应该停止在这里阅读。如果您试图通过弄乱\uDSO\uHandle来破坏对象标识,则可能出现了严重错误
然而,既
当我编译一个需要D中的mondo库的程序时,我会被链接器中的一大堆错误所困扰。最后两行是唯一可以远距离辨认的:
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
然而,之前的所有其他行基本上都说了同样的话:“未定义的引用…”
在询问堆栈溢出之前,我已经对这个问题进行了研究,但对其他人有用的东西似乎对我不起作用。(当然,我必须用C或C++构建来查找这个问题,但我想它没有明显的不同。)
互联网
我尝试使用FMDB数据库,但出现错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_FMDatabase", referenced from:
objc-class-ref in MainViewAppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code
标签: Linker
configureautotoolslibtool
我想将自动工具项目配置为调用非标准
链接器(链接器),
使用Linux Mint 16/Ubuntu 13.10的库存自动工具
我相信我会通过以下方式实现这一目标:
libtoolize-ing项目
正在运行/configure LD=/path/to/my/linker。。。等等。
然而,这是无效的libtoolize已成功。之后
标准/配置;make我现在看到libtool正在执行
链接:
但是将LD=/path/to/my/linker传递到configure没有任何区别。实验上,
我
我试图强制链接器(ld来自XC32)在flash的两个不同部分中放置相同的可执行代码
应用程序是这样的,代码可以作为独立的应用程序运行,也可以由引导加载程序覆盖重置向量,引导加载程序随后可以分支到伪重置向量
我的链接器脚本的相关部分如下
MEMORY
{
kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x480
bootload_boot_mem : ORIGIN = 0x9D1F0000, LENGTH = 0x480
}
S
我是否可以查看/访问在LLVM传递级别传递给链接器的参数列表
例如,如果我使用以下参数运行编译:
clanga.cpp b.cpp-o result-std=c++11-lstdc++-lm-Wl,someArg1,someArg2-mllvm-MyPass
在我的LLVM过程(MyPass)中,我希望看到(并使用)参数列表:stdc++、m、someArg1和someArg2
如何做到这一点,以及哪些类和方法存储这些信息
谢谢 不幸的是,LLVM pass无法查看cmdline参数。也许您可以
标签: Linker
ldbinutilslinker-scriptsgold-linker
使用链接器脚本在地址空间中布局符号时,ld允许
使用以下符号引用来自静态库的特定符号
语法:
使用gold而不是ld,这样的指令似乎被忽略了。这个
链接过程成功。但是,当使用此指令放置特定的
在特定位置使用黄金标记,并检查生成的符号布局
使用nm或查看地图文件时,符号不在预期范围内
地点
我使用静态编译的虚拟hello world程序制作了一个小测试用例
以gcc 5.4.0为核心。C库是musl libc(上一次提交)
来自官方git存储库的主分支)。对于binutils,我还使用
来自官方g
玩一些简单的代码,但我得到了以下错误:
严重性代码说明项目文件行抑制状态
错误LNK1105无法关闭文件“E:\repos c++\Prime Numbers Exercise\Debug\Prime Numbers Exercise.exe”Prime Numbers Exercise E:\repos c++\Prime Numbers Exercise\Prime Numbers Exercise\LINK 1
我试图在网上找到一些解决办法。唯一的信息是关于磁盘大小的(这很好:我有足够的空
我最近在一个项目中偶然发现了这一点。在包A中,有一个必需的配置选项--package-B-makefile-location,A的makefile从中借用变量值
这是一种具有优点的常见设计模式吗?在我看来,B的包源代码与编译A的二进制代码一样重要。可能有什么原因我不想篡改它吗
谢谢
Andrew就其本身而言,这是一种常见且有用的设计模式,但它也可能像其他任何模式一样被滥用
我不确定我是否理解你问题的第二部分,但是如果makefiles设计得很好,那么你对B的makefiles所做的任何更改如果不
大家好,我希望我能找到一个解决方案,我有我的monotouch项目,我已经为设备上的测试配置了我的临时配置文件,我能够使用标准编译器生成应用程序,但是当我想使用LLVM编译器时,这个编译过程实际上永远不会结束。。我让mac开了一整夜。。我甚至尝试更改链接器选项(我知道这是不推荐的)。简而言之,我尝试了只使用link sdk程序集和不使用link。但这一过程永远不会结束。如果有人遇到she问题,请帮助我。谢谢。我从未见过这一点,但这肯定是一个bug,应该留给Xamarin
请尝试将-v-v-v添加
我有一个名为libplatform.a的静态库,两个静态库liba.a和libb.a构建在libplatform.a之上。现在我想创建一个名为foo的程序,它将与所有三个静态库一起构建
那么在最终的程序foo中将保留多少份libplatform.a
那么在最终的程序foo中将保留多少份libplatform.a
不超过一个,可能少于一个。最终可执行文件中只包含libplatform.a中某些文件的一个副本。下面是链接器工作原理的示例
那么在最终的程序foo中将保留多少份libplatform.a
代码如下:
public class Thingy
{
public static void main(String[] args)
{
System.out.println(Math.random());
}
}
所以,绝对不是一个不寻常的案例,只是一个基本的例子
当我尝试使用GCJ的javac实现来生成字节码而不是OpenJDK时,它工作得很好
neil@neil-Inspiron-M5030:~/javastuff$ javac Thingy.java
neil@n
标签: Linker
google-maps-sdk-ioscocoapods
我正在尝试使用cocoapods为iOS版本1.3.0安装Google地图SDK
实际上,安装过程非常成功,但当我尝试使用框架时,应用程序构建过程会返回链接器错误,例如:
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_GMSServices", referenced from:
objc-class-ref in AppDelegate.o
由于某种原因,链接器找不到框架。我的cocoapods版本是0.20.1。代码
我最初遵循本教程:
就在大约一半之后,从这里开始写“在项目中添加源文件”
我根据此文件创建了我的CMakeLists.txt文件,如下所示:
cmake_minimum_required (VERSION 2.6)
project (Cube_Project)
find_package(OpenGL REQUIRED)
add_executable(Cube
main.cpp
)
include_directories(
external/glfw-2.7.6/includ
有没有办法列出创建.so文件时使用的文件nm既不能使用,也不能使用'readelf'。某些表维护信息吗?您不能列出用于创建共享对象文件的对象文件,因为默认情况下,该信息不会存储在共享对象文件中。共享库是完全链接的,因此不能“取消归档”。请参见,但可以使用此命令列出包含的函数
nm -D /usr/lib/libopenal.so.1
标签: Linker
linker-errorslinker-scripts
如何基于链接器脚本中定义的链接器变量的条件值使构建失败
我正在使用GCC编译C代码。我定义了一个链接器变量BINARY_TEST。如果BINARY_TEST的值>32KB,那么我希望构建失败。如何使用链接器脚本编写条件测试并使生成失败?
请建议任何脚本
SECTIONS
{
. = 0x0000 ;
.text :
{
*(.text)
*(.rdata)
}
.data :
{
我正在为使用锌的STM32F407处理器编写一个Rust程序。我想能够产生一个链接器映射文件。我发现,我可以在main.rs中添加以下内容,从而获得所需的结果:
#![feature(link_args)]
#[link_args = "-Wl,-Map=blink_stm32f4.map"]
extern {}
但是,他建议不要使用这种方法
还有什么其他方法可以让链接器生成映射文件?link args可以通过rustc-C link args=“-Wl,-map=blink\u stm32f
是否可以使用链接器脚本或映射文件重命名符号?
我尝试修改一些C++和FORTRAN混合代码,这样它就可以在Linux上使用多个Fortran编译器。它目前是为Solaris Studio编译器编写的,启用了区分大小写选项。我想自动处理Fortran符号名的变化(比如从Makefile)
似乎可以创建别名,因此链接器脚本包含:
C_Function_ = c_function;
这将是一种工作。不幸的是,添加-T选项来引用此脚本会导致行为上的其他一些更改,并且由于找不到libdl.so.2/li
标签: Linker
codecfreeswitchlibtool
我以前成功安装过其他FS模块,但这个模块我无法修复。我会提供尽可能多的细节,这个问题可能不是一个具体的问题。如有任何一般故障排除建议,将不胜感激
环境如下图所示,我使用的是freeswitch-1.6.19源代码
$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
$ ls /usr/lib64/ilbc2/ -lh
total 64K
lrwxrwxrwx. 1 root root 16 Oct 24 20:18
标签: Linker
portable-executableaslr
我曾尝试使用bind.exe绑定64位可执行文件(我使用的是Win7 x64),它似乎非常乐意绑定64位可执行文件,并且使用verbose选项绑定其输出似乎是合理的。尽管如此,它还是导致了一个可执行文件在初始化过程中崩溃——各种指针指向“错误”位置和“无位置”
以防万一,我尝试使用CFF Explorer绑定导入,但结果和问题是一样的
我的问题或者更确切地说,我的要求是:是否有人对64位可执行文件是否可以绑定其导入以及原因有权威的答案?如果答案是肯定的,问题是怎么做
谢谢你的帮助。答案是肯定的。
老实说,我认为这个问题应该很简单,只要看看manld。然而,通过阅读manpage和其他人编写的代码,我发现人们可以互换使用它们,或者在他们认为传递给链接器的库的顺序可能存在问题的同时使用它们
我想知道这两个选项之间有什么区别,使用它们的最佳实践是什么
谢谢
相关链接:
在撰写本文时
告诉我们:
静态库是对象文件的存档。作为链接器输入,链接器提取进行链接所需的对象文件
所需的对象文件是那些为链接器提供符号定义的文件,链接器发现这些符号在其他输入文件中使用,没有定义。
所需的对象文件(而不是其
标签: Linker
c++builderc++builder-2007
我的IDE一直工作得很好,直到今天
当我尝试编译我的项目时,我得到以下结果:
[链接器错误]无法打开文件“CHARTGROUPFRAME.DFM”
CHARTGROUPFRAME.CPP单元是项目的一部分,因此这当然是一个bug
如何解决此问题?我已找到此问题的解决方案:)
我只需要将.DFM文件所在的目录添加到我的库路径中
顺便说一句,这应该是由IDE设置时,我添加一个单位的项目。。。但是,至少这是可行的:)在RAD Studio 10.1中也遇到了这个问题,对我来说,关闭打开这些文件的编辑器
我正在将编译器从用于ARM EABI gcc(v4.7.2)的Codesourcery Codebench Lite更改为ARM gcc 2014 q1(v4.8.3),并且我的程序的链接器文件中定义的某些内存地址的位置存在问题。该芯片是STM32F103RBT6
Reset handler函数是调用的第一个函数,它试图将数据段初始化器从闪存复制到SRAM。执行以下代码:
void Reset_Handler(void)
{
unsigned long *pulSrc, *pulDest
在ld(来自binutils)的手册页中,有关于-Bstatic标志变化的部分:
-Bstatic
-dn
-非共享的
-静态
不要链接到共享库。这仅在支持共享库的平台上才有意义此选项的不同变体是为了与各种系统兼容。您可以在命令行上多次使用此选项:它会影响库搜索后面的-l选项。此选项还意味着--未解析符号=报告所有。此选项可与-shared一起使用。这样做意味着正在创建一个共享库,但是必须通过从静态库中提取条目来解析库的所有外部引用
我的问题是关于黑体字的句子:这些变体究竟是为了哪些系统而尝试兼
标签: Linker
gfortranrcpparmadillo
请运行以下命令:
edd@max:~$ dpkg -l | grep libgfortran | cut -c-75
ii libgfortran-4.7-dev:amd64 4.7.3-7ubuntu3
ii libgfortran-4.8-dev:amd64 4.8.1-10ubuntu9
ii libgfortran3:amd64
LLVM的lld的命令行选项文档在哪里
我已经看过了,但似乎什么也找不到。有:
LLD是GNU链接器的替代品。它接受与GNU相同的命令行参数和链接器脚本
我们目前正在与该项目密切合作,使LLD成为操作系统未来版本中的默认系统链接器,因此我们认真考虑解决兼容性问题
啊,我错过了。谢谢这并不是完全不清楚,但遗憾的是,它们没有使在哪里可以找到命令行语法变得更加明显。
如果从命令行中删除所需的.o,.so将导出符号。因此,似乎链接器正在决定,既然其他.o用于构建。所以需要符号,它必须仅由那些.o所需,而不必真正导出
当我试图构造一个最小的测试用例时,它不能以这种方式工作;无论我是否添加了需要该符号的.o,该符号始终导出
我的完整命令行是:
C++ -fNO RTTI - FNO例外-墙WAtho- Wyth-WNO Cto-Dor隐私- WNO非虚拟DRT-WCAST对齐-WNO无效偏移-WNO变量宏-迂回- Wno长-长GALFIG-2-FNO严格混叠-p
我正在尝试创建我自己的ELF.o文件,我想在其中写出指向其他内存条的内存条。我不想给每一条都起一个名字,所以我只是跟踪它们相对于所处章节开头的位置
因此,我以以下形式创建了一个重新安置条目:
000000000 A50 00090000000b R_X86_64_32S 0000000000000000.节+a70
其中,在a50处,我们使用64位全局指针引用.section+a70处的对象。本节的定义如下:
9:0000000000000000节本地默认值6
前面的输出来自readelf,它实
标签: Linker
avrunresolved-external
我的项目使用v-usb库。
我写了代码,我想编译它,但不幸的是我有一个错误,我无法解决。
这是我的屏幕截图:
Description Resource Path Location Type
make: *** [USB_module.elf] Error 1 USB_module C/C++ Problem
undefined reference to `usbInit' main.c /USB_module C/C++ Problem
un
标签: Linker
executableobject-files
当我们编译代码时,会生成一个对象文件。在链接过程中,从该对象文件生成一个可执行文件
为什么我们需要一个对象文件?对象文件的用途是什么?难道不能直接生成可执行文件吗?毕竟,我们使用的是一个可执行文件来运行程序。对象文件是链接器用来构建完整可执行文件(或库)的文件
您通常可以让编译器“直接”输出一个可执行文件,语法将取决于编译器。例如,对于GCC:
gcc foo.c bar.c ...
将生成一个可执行文件,并且不会保留任何中间对象文件(但可能已经生成了一个,并随后删除)
对象文件用于进行增量生
据我所知
动态加载意味着在加载或运行时将库(或任何其他二进制文件)加载到内存中。所以在下面的程序中,当调用dynamic loader的dlopen()进入图片时,如果库尚未加载,它将把库加载到内存中
动态链接是指在加载或运行时完成的链接。它解析外部引用。
所以在下面的程序中,dlsym()函数将请求余弦函数,动态链接将出现在图片中,符号将被解析
int main(int argc, char **argv) {
void *handle;
double (*cosine)(do
我已经成功地在64位Linux上编译了一个带有fpc(免费pascal编译器)的测试应用程序
遗憾的是,当链接时,它不起作用
ld开始工作,但3分钟后,ld发出消息:
“ld遇到错误。链接已中止”
如何知道问题是什么,是否可以调试链接过程,或者是否存在ld链接器所执行操作的日志文件
非常感谢
Fre;D是的,ld--verbose参数起了作用
Fre;D
标签: Linker
static-linkingdynamic-linking
.so和.dll文件必须正确导出所有公共对象,因为您可以动态链接它们
为什么您当前无法静态链接.so和.dll文件?他们是否缺少链接过程所需的某些信息,或者只是没有写入链接过程的ld代码?检查
我知道头文件包含函数和变量的声明,这些声明在编译期间有助于判断输入的参数是否有效
默认情况下是否链接了所有库函数?
//#include<stdio.h>
//#include<math.h>
int main()
{
printf("Hello\n");
double d;
d=sqrt(64);
printf("%lf",d);
return 0;
}
它起作用了
默认情况下是否链接了所有库函数?默认情况下,C工
我遇到链接器错误(编译时,而不是运行时):
这只是错误的最新版本。我试图链接/usr/lib/libobjc.A.dylib,我想硬编码路径;库保证存在于我所在平台的这条路径上。它确实:
bhaller@lanois % ls -l /usr/lib/libobjc.A.dylib
-rwxr-xr-x 1 root wheel 859536 Jan 23 08:59 /usr/lib/libobjc.A.dylib
我试过:
-L/usr/lib/ -llibobjc.A.dylib
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 23 页