linker相关内容

使用 mex 链接和加载静态 .lib

所以,我有一个调用我的 C 源代码的 MEX 网关脚本文件.我使用 -L 和 -I 命令将我的 64 位编译 GSL 库 (.libs) 链接到我的 mex 可执行文件,然后在 .mexw64 的扩展名下编译. 我希望将此可执行文件传输到另一台 Windows 机器并运行良好,而无需安装任何 GSL 库.这是唯一的解决方案,我不在乎他关于编译时动态链接/代码生成的好处的论点是什么.我想要一个 ..
发布时间:2022-01-11 15:44:26 其他开发

[UNIX]:我是否需要在项目的 makefile 中添加所有库,这些库是从库中使用的,在我的项目中使用?

哈,这听起来比实际上更复杂.这就是我的意思: 假设我编写了一个使用线程的应用程序.在这个应用程序中,我没有直接使用 pthreads,而是使用了一个使用 pthreads 的包装器.因此,在这个包装器的 makefile 中,必须包含 -lpthread.还有一个问题 - 我是否需要在我的项目中包含 -lpthread ,还是没有必要?还是视情况而定?如果有,在什么方面? 我问这个,因 ..
发布时间:2022-01-11 15:44:16 服务器开发

当 extern 声明和定义之间的类型不匹配时,会有什么行为?

假设我有两个文件: ==文件1== extern char* foo; ==文件2== double foo; 尽管类型不匹配,这两个文件似乎与 g++ 和 clang++ 都可以很好地编译和链接.据我了解,推荐的做法是将 extern 声明放在两个文件都包含的标头中,因此 File2 将引发重新定义错误. 我的问题是: 根据 c++ 标准,这是否会导致未定义的行为?如果 ..
发布时间:2022-01-11 15:44:00 C/C++开发

无法通过“未定义的对‘XXXX’的引用";

我目前正在编写一个仅包含标头的包装库,它应该提供对某些 FORTRAN 代码的 C++ 访问.但我被困在'未定义的参考(...)' 我必须说我有点惊讶,因为我使用这个 FORTRAN 例程在 C++ 中编译了自己的函数,完全没有问题. 也许是关于结构的几句话.该库遵循单例模式,但无法由用户实例化该库.所以用户的唯一入口点是一个静态方法MultiNestWrapper::Wrapper: ..
发布时间:2022-01-11 15:43:53 C/C++开发

WSAStartup 链接错误

我正在使用 EVC++,我想编译使用套接字的程序.我已经包含了 #include 我已经在项目属性中包含了 Ws2.lib 的路径但仍然在链接步骤得到错误: 错误 LNK2019:函数中引用了未解析的外部符号 WSAStartup ... 如何解决这个问题? 解决方案 #pragma comment(lib,"WS2_32")毕竟 #inc ..
发布时间:2022-01-11 15:43:11 其他开发

为什么 arm-linux-androideabi-gcc 给出 iostream 错误

我的计算机上安装了 arm-linux-androideabi-gcc,但是当我尝试编译一个简单的地狱世界时,它会报错(我选择不使用 ndk-build).我只想从命令行编译... #include 使用命名空间标准;诠释主要(){返回0;} 我收到了这个错误: 错误:iostream:没有这样的文件或目录 我在 ~/android-ndk-r8b/toolch ..
发布时间:2022-01-11 15:42:57 移动开发

不同系统上的相同构建

我有 3 台构建机器.一个在 Windows 2000 上运行,一个在 XP SP3 上运行,一个在 64 位 Windows Server 2008 上运行.我有一个本地 C++ 项目要构建(我正在使用 Visual Studio 2005 SP1 构建).我的目标是使用这些构建机器构建“完全相同"的 dll. 我的意思是一点一点(当然除了构建时间戳). 使用 win2k 和 win ..
发布时间:2022-01-11 15:42:51 C/C++开发

将二进制文件与内存中特定位置的函数/数据链接起来

我目前正在为 ATMega 编写中间内存引导加载程序. 我想将一段常用函数和数据放在内存中的特定位置,这样: 无法克服引导加载程序部分的大小限制 应用程序部分不会复制库函数、驱动程序等,因此会浪费空间 为了便于说明,下面是所需内存布局的地图: 在 此线程 在 avrfreaks 上,我已经能够移动未标记为 __attribute__ ((section(".boot")) ..
发布时间:2022-01-11 15:42:18 其他开发

如何使用 LLVM >= 3.1 将对象链接到库?(没有 GNU ld)

如何使用 Llvm/Clang(版本 3.3 (trunk 168461))提供的工具生成工作可执行文件? 我已经用 clang++ -c [...] 编译了一个对象,我想尝试将此对象链接到 1 个特定库,看看这是否可以生成一个有效的可执行文件.p> 我注意到,从 3.1 版本 llvm-ld 开始,它已被删除,并且 llvm-link 看起来并没有继承 的所有选项llvm-ld,虽然它在 ..
发布时间:2022-01-11 15:42:02 其他开发

继续获取 e8 00 00 00 00 作为机器代码以在汇编中调用函数

我知道在我的文件中使用 objdump -dr 时 call 在机器代码中显示为 e8 00 00 00 00 因为它没有尚未被链接.但我需要找出链接器完成工作后 00 00 00 00 会变成什么.我知道它应该计算偏移量,但我对此有点困惑. 以下面的代码为例,链接器部分完成后,e8 00 00 00 00应该如何?我如何得到这个答案? 我正在使用此示例代码进行测试:(我正在尝试调用 ..
发布时间:2022-01-11 15:41:52 其他开发

链接器如何解析动态可加载库中的重复符号?

我有两个可动态加载的库 lib_smtp.so 和 libpop.so 等.两者都有一个名为 protocol 的全局变量,分别初始化为“SMTP"和“POP".我有另一个静态库 libhttp.a,其中 protocol 被初始化为“HTTP". 现在由于某种原因,我需要静态编译所有动态可链接和可加载库并包含在可执行文件中.这样做我在链接静态库期间收到错误“multiple definit ..
发布时间:2022-01-11 15:41:36 服务器开发

java.library.path 中没有 ocijdbc9

当我尝试运行 Java 应用程序时,我收到以下错误: 线程“main"java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 ocijdbc9 我的 PC 上没有文件 ocijdbc9.*,但我在 %ORACLE_HOME%\bin 中有 ocijdbc10.dll. %ORACLE_HOME% 指定正确,所以我认为问题 ..
发布时间:2022-01-11 15:41:28 Java开发

在 Ubuntu 11.10 中使用 gcc 链接错误

我正在尝试用 C 编译并运行一个简单的“Hello World"程序,但遇到一个奇怪的错误一些C标准库函数的多重定义 .c 文件是: #include #include int main(int argc, char **argv) {printf("你好世界\n");返回0;} 我用来编译和创建可执行文件的命令是: gcc -Werror -Wa ..
发布时间:2022-01-11 15:41:21 其他开发

模板运算符链接器错误

我有一个链接器错误,我已简化为一个简单的示例.构建输出是: debug/main.o: 在函数 main': C:\Users\Dani\Documents\Projects\Test1/main.cpp:5:未定义的对log&的引用日志::运算符 ..
发布时间:2022-01-11 15:41:15 C/C++开发

具有默认函数的 Windows 静态库

我想在 Windows 中创建一个静态库 (.lib),可以在后续构建中用作未定义函数的“备份". 例如,假设我有 foobar.lib,它有以下定义: FOO酒吧 我还有一些其他程序只定义了 FOO 并且将被构建到必须导出 FOO 和 BAR 的 DLL 中.我希望能够使用 foobar.lib 在生成的 DLL 中自动导出 BAR 的默认定义(并忽略 foobar.lib 中 FOO ..
发布时间:2022-01-11 15:40:59 其他开发