linker相关内容
在使用 NASM 构建定义自己的 _start 而不是 main 的汇编程序时,我得到了一个 undefined reference to _printfx86-64 Ubuntu 构建命令: nasm -f elf64 hello.asmld -s -o 你好你好.ohello.o:在函数“_start"中:hello.asm:(.text+0x1a): undefined refer
..
这是我第一次尝试用汇编编程.我使用的是 64 位 Mac 操作系统.我也在使用 NASM.我已经四处寻找解决方案,但找不到任何适用于我的机器的东西. 谁能帮我解决这个问题?这是代码和错误,谢谢! hello.asm 全局开始部分 .text开始:mov rax, 1mov rdi, 1mov rsi, 消息mov rdx, 13系统调用移动 eax, 60xor rdi, rdi系
..
如果我编译这个程序: #include int main(int argc, char** argv) {printf("你好世界!\n");返回0;} 对于 x86-64,asm 输出使用 movl $.LC0, %edi/call puts.(在 Godbolt 上查看完整的 asm 输出/编译选项.) 我的问题是:GCC 如何知道字符串的地址可以放入 32 位立即
..
我有一个用 Visual Studio 编译的静态库,我想从 MinGW 链接到它. 我尝试更改后缀,但收到一堆警告,例如:Warning: .drectve/DEFAULTLIB:"uuid.lib"/DEFAULTLIB:"uuid.lib"/DEFAULTLIB:"MSVCRT"/DEFAULTLIB:"OLDNAMES" ' 无法识别. 还有一些错误,包括:./libetpan
..
我正在尝试使用我编写的库来编译一个简单的测试应用程序.这在其他机器上编译并运行良好. 我在/usr/lib 有 libroller.so.我正在编译一个 main.cpp: g++ -g3 -Wall -I"../../" -lrt -lroller -o rap main.o 它抱怨许多错误,例如: /....../main.cpp:51: 未定义对 `Log::i(char con
..
我在网上做了一些搜索,但我找不到如何从 linux 编译简单的 C++ 和 Fortran 代码.我需要让它变得复杂,但我只需要知道如何从一个简单的例子开始. 我的 C++ 代码是这样的: #include 使用命名空间标准;extern int Add(int *, int *);extern int 乘法(int *,int *);主函数(){整数a,b,c;cou
..
这是我在此站点上的第二篇文章,旨在了解 gcc 的编译/链接过程.当我尝试制作可执行文件时,需要在链接时解析符号,但是当我尝试制作共享库时,符号不会在此库的链接时解析.当我尝试使用此共享库制作可执行文件时,它们可能会得到解决.动手: bash$ cat printhello.c#include //#包括“look.h"无效打印你好(){看();printf("你好世界\n")
..
DLL 和 LIB 文件有什么区别?DLL 文件里面有什么,LIB 文件里面有什么?创建可执行文件是否需要 DLL 和 LIB 文件? 解决方案 DLL 文件是最终的构建产品,它是您安装在客户机器上的文件.它与 EXE 文件非常相似,结构相同,但可以按需加载到另一个程序中. LIB 文件用于构建您的程序,它只存在于您的构建机器上,您不会发布它.有两种.静态链接库是一袋 .obj 文件
..
我有一个必须构建的程序.程序依赖libA,libA依赖libB.两个库都在同一个文件夹中,但 ldd libA.so 不包括 libB.so 所以我必须在链接时添加它. 这是我的 gcc 命令: gcc -L/path/to/libraries/lib -lA -lB -I/path/to/libraries/include main.cpp 程序构建并链接,但没有启动.它给了我
..
我想在 API 中提供一个字符串常量,如下所示: extern const char* const SOME_CONSTANT; 但如果我在我的静态库源文件中将其定义为 const char* const SOME_CONSTANT = "test"; 我在链接到该库并使用 SOME_CONSTANT 时遇到链接器错误: 错误 1 错误 LNK2001:无法解析的外部符号“cha
..
哦,我是 GCC、MAC 和 Makefile 的新手.今天我打算使用 MAC OS X 和 GCC 4.4.2 构建一个动态库,但是在链接 .o 文件时,编译器会这样抱怨: 未定义符号:“___emutls_get_address",引用自:michael.o 中的 _mallocmichael.o 中的 _mallocld:未找到符号 我用谷歌搜索了这个信息,但我不能很好地理解结果,我想知
..
出于某种原因,我想将静态库 (libx.a) 解压缩到单独的目标文件 (ao bo co) 中,并在链接器输入列表中指定这些目标文件 (ao bo co) 而不是 libx.a,使用其他链接器选项保持不变. 但是,我注意到上述更改导致输出可执行文件存在相当大的差异.基本上,(a.o b.o c.o) 方法会导致更大的输出大小. 那么这两种方法(libx.a 和单个目标文件)有什么区别?
..
我正在尝试找到一种好方法来确定链接时哪个模块导致某个库被处理为“/DEFAULTLIB",如 Visual Studio 的详细链接器输出所示. 这是我的情况,我有几个静态库先决条件,每个都有一个发布版本和一个调试版本(BlahD.lib 和 Blah.lib).由于某种原因,在链接时,所有 *D.lib 都作为默认库处理,即使我正在构建一个带有指定为“附加依赖项"的非调试库的版本.如果我从
..
我正在尝试链接我的程序可执行文件,但我不断收到错误. 拥有 boost::this_thread::sleep(boost::posix_time::milliseconds(10)); 在我的源代码中,在链接器中产生以下错误: `.text._ZN5boost16exception_detail19error_info_injectorISt13runtime_errorED2Ev'
..
我正在尝试编译一些非常古老的代码(1986 年及之前).此代码引用了一个外部函数.今天的编译器要求更多的代码来完成这项工作.而我一直失败.我现在创建了一个小的 hello world 程序来演示这个问题. 你好.for 程序你好使用功能打印 *,“Hello World!"打印 *, f ()结束程序你好 func.for MODULE 函数公共场所包含函数 f ()f='你好功能
..
我正在尝试从一组目标文件中构建档案.我正在这样做 ar -rs my_archive.a foo.o bar.o other_object_files.o. 在 linux 机器上一切都很好,但是当我在我的 mac 上尝试相同的命令时,似乎只添加了一些目标文件.这会导致对应于子例程的未定义符号,比如 other_object_files.o. 此外,如果我尝试手动链接导致未定义符
..
我正在尝试使用 boost 库 1.57 在 Linux x64 上编译我的 C++ 项目. 这个项目是用 scons 编译的,我在 Arch Linux 上编译成功,但这次在 Ubuntu 机器上编译失败. 我为链接添加了 -lboost_coroutine 标志,但错误“未定义引用"仍然存在. /usr/bin/g++ -o build/gcc.release/app -pthr
..
我正在使用 Visual C++ 2008,SP1.我在调试构建配置中有一个 QT 应用程序(gui、.exe).它设置为使用 CRT 的多线程调试 DLL 版本,即 MSVCRTD.lib. 我正在链接以发布模式构建并使用 CRT 的多线程 DLL(非调试)版本的第 3 方库,即 MSVCRT.lib. 它链接并运行,但在启动时崩溃.链接时我收到警告: LINK:警告 LNK4
..
我有一个 DLL,我想使用它的一些功能. #include 使用命名空间标准;extern "C" __declspec(dllimport) int Initialize(char* localPort, char* adminServerName, int rpcTimeout);主函数(){int res = Initialize("7864", "6000@kabc"
..
我正在尝试编译我在 linux 上使用正则表达式的程序.我在库/正则表达式/构建通过键入制作-fgcc.mak它创建了一个目录 gcc,其中包含以下四个文件 boost_regex-gcc-1_35boost_regex-gcc-d-1_35libboost_regex-gcc-1_35.alibboost_regex-gcc-d-1_35.a 现在我想使用我的程序中的正则表达式,它位于某个任
..