c - C 中的一对一链接

标签 c linker dependencies object-files

有没有办法在 C 语言中实现目标文件的链接,使得某些对象只能相互链接在一起?

例如。尝试链接对象 1 和对象 2 将工作并生成工作可执行文件,但尝试链接对象 1 和对象 3 将返回错误,或者生成的可执行文件将无法正确工作。

背景信息: 基本上,情况是程序员 A 和程序员 B 将他们的对象发送给链接器公司。 A 和 B 希望确保链接器公司只能将他们的对象链接在一起,而不能将他们的对象与其他程序员(即程序员 C 等)对象链接(因为这是非法的)。

Jörgen Sigvardsson 的回答很有用,但我想知道是否有更简单的方法。例如。如果尝试使用 gcc 将非法对象链接在一起,链接器公司可以确定需要哪些符号,然后将它们添加到非法对象中,轻松突破限制。

最佳答案

是的,有办法。在对象 1 中:

extern int object_1_symbol;
int object_2_symbol;

在对象 2 中:

int object_1_symbol;
extern int object_2_symbol;

这将要求您将这些对象链接在一起,并阻止您将其与对象 3 链接在一起。这并非万无一失,但它可能会满足您的目的。

关于c - C 中的一对一链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867398/

相关文章:

c++ - 垃圾收集 C 会比 C++ 更快吗?

java - Axis2 1.5.1 生成的 stub 的依赖项

go - 如何检查链接到我的 Go 代码中的包的大小

haskell - 如何列出 Cabal 计算的依赖项

java - 在任何Java构建管理器(maven,gradle,sbt等)中定义程序包冲突解决优先级

c - 从 C 程序中调用调试器

c - C中的冒泡排序 float

C - 将缓冲区复制到字符串 - 这甚至可能吗?

c++ - boost::iostreams::bzip2_compressor 仅在使用 c++0x 时失败

c++ - 如何实现 github C++ 库?