问题标签 [object-files]
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.
perl - 使用 Perl 从 .obj 转换为 .h
我使用搅拌机生成了一个 obj 文件,现在我想将目标文件转换为头文件。我安装了 Perl 和 opj2opengl.pl,但我不知道应该使用哪个命令行以及应该编写哪些命令。一些网站建议写“opj2opengl.pl abc.obj”,但这对我不起作用。我感谢您的帮助。
c++ - 链接两个目标文件时,#ifndef 是否会阻止定义函数两次?
我有两个类实现(.cpp files
)
他们都需要一个在header
(.h) 文件中实现的函数。这两个 .cpp 文件都包含 .h 文件。编译后,这两个.cpp
文件就变成了两个.o
文件。
链接两个目标文件时是否定义了两次函数?
能#ifndef
防止这种情况吗?
我用过#ifndef
,但收到以下消息,
java - 在 Java 中保存到目标文件:getParentFile()
我有以下代码将车辆类型的对象保存到文件中。但是,我不太了解它是如何工作的,因为它是为我提供的示例,而且我是 java 领域的新手。
我想知道这些行的解释是if (!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
}
什么我想知道getParentFile().exists()
在我们对文件本身感兴趣的同时搜索父文件是什么以及为什么要搜索父文件。下一行的同样问题:为什么我们要创建文件时对父目录感兴趣?我也想知道在以下几行中两者之间的区别FileOutputStream
以及ObjectOutputStream
为什么两者并排使用FileOutputStream fout = new FileOutputStream(f, false);//overwrite, append set to false
ObjectOutputStream out = new ObjectOutputStream(fout);
提前谢谢
c++ - C/C++:静态链接库和目标文件有什么区别?
我知道编译时包含在可执行文件中的代码可以来自目标文件(.o 文件)和静态链接库(.lib/.a 文件)。这两者在根本上和概念上有什么区别?为什么“目标代码”和“静态链接库”之间有不同的概念?每种方法的优点和缺点是什么,为什么要使用一种而不是另一种?静态链接库可以由目标文件制作,反之亦然,目标文件可以由静态链接库制作吗?
assembly - 目标文件中的符号表和重定位表
据我了解,目标文件中的指令和数据都有地址。第一个数据项从地址 0 开始,第一条指令也从地址 0 开始。
重定位表包含有关在文件中的地址更改时需要更新的指令的信息,例如,如果文件与另一个文件链接在一起。在下面的示例中,行 A 将位于重定位表中。我认为 B 不会在重定位表中,因为标签“等于”的地址是相对于 B 而言的。这些假设是否正确?
我知道符号表显示文件具有的标签以及尚未解析的标签。但是符号表还包含哪些其他信息?
此外,当汇编器将指令转换为二进制时,那些具有未解析引用的指令中放置了什么?本例中为 B。
c++ - 哪个目标文件包含以下静态模板化“成员变量”?
假设我有一个带有静态成员函数的以下模板类,该函数本身实例化一个静态变量(从功能上讲,它是第一次调用其包含例程时实例化的静态成员变量):
如果我foo<T>
在多个翻译单元中使用某些T
,编译器会将其放入哪个目标文件中foo<T>::mystatic::value
?在链接时如何解决这种明显的重复/冲突?
c++ - 构建依赖于其他目标文件的目标文件 (C++)
我有一个文件 Matching.cxx,其中包含一些类方法定义和一些其他函数。它包含对许多其他类的调用。在我的 makefile 中,我首先为所有其他类创建目标文件,然后尝试制作 Matching.o。但是,当我这样做时,这些其他类的每次出现都会出现错误。同样重要的是,在引发编译错误的区域中,我创建了一个抽象基础对象,并且我基于某些条件从某些派生对象继承。我有一种感觉,这与没有正确地将目标文件链接在一起有关,目前我只是在制作其他每个类的 makefile(这很好),然后制作 Matching.o(这失败)然后我会链接他们一起进入最终的可执行文件。显然有些不对劲!
任何建议都非常感谢 Cheers Jack
更多细节:
错误看起来像:
android - 如何将 .o 文件添加到 Android ndk 构建
我有一个用于 3rd 方库的 .o 文件。我没有它的 .c 文件,也无法访问它们。通常这不是问题,我只需将其添加到要链接的文件列表中。但是我找不到在不更改构建脚本的情况下在 NDK 中编译文件的情况下链接文件的方法。有什么建议么?
c - .s 文件的大小大于 .o 文件 linux
我正在编译一个程序来查找数组中的最大数字。
已编辑
我编译如下:
然后在做
输出是:
我的问题是:为什么 .s 程序集文件的大小比 .o 二进制文件大?
我认为 .o 文件具有二进制字符串,因此它会更大。
由于链接库,最终文件的最大大小也如预期的那样大。但是 .o 文件的大小让我认为 .o 文件没有二进制字符串,而是其他东西。如果我在某处错了,请纠正我。
c - 构建依赖于其他目标文件的目标文件
编辑:包括指向我的 makefile 的链接
我有一个主程序,它调用其他源文件中定义的一堆函数。这不是问题,因为我正在使用cc -c functionSource.c
functionHeader.h并在编译我的主程序之前生成目标文件cc main.c func1.o func2.o .... -o test.o
当我的一个功能依赖于另一个功能时,我遇到了问题。例如:我的主程序调用一个在它自己的源文件中定义的 shuffle 函数,并且 shuffle 函数调用一个 swap 函数,该函数又在它自己的源文件中定义。
当我尝试使用为我的主程序生成 shuffle.o 文件时,cc -c shuffle.o
出现undefined reference to swap
错误。
当我尝试时,cc shuffle.c swap.o
我得到一个undefined reference to main
错误。
这是我的makefile
我该如何解决这个问题?
发现了问题。我在 insertSort.h 和 shuffle.h 中声明了一个交换函数,但没有实现。