代码之家  ›  专栏  ›  技术社区  ›  falstro

进行(动态)链接所需的最少信息量?

  •  0
  • falstro  · 技术社区  · 15 年前

    这是我反复遇到的一个问题,通常与插件有关,但最近我遇到了这个问题,试图解决一些构建系统问题。我主要关心的是基于*nix的系统,但我认为它也适用于Windows。

    问题是,动态链接所需的最小信息量是多少?我知道像Debian这样的Linux发行版只有一个“i686”,这就足够了。但是,我认为这里有一些隐含的信息,而且只要使用 -march=i686 我会吗?

    所以,为了成功加载共享对象,必须正确匹配什么?我知道,对于C++,甚至编译器(有时版本)都必须匹配名字,但是我希望C不是这样。

    任何想法都值得赞赏。

    编辑 以下内容:
    尼尔的回答让我意识到我不是在谈论动态链接,或者更确切地说,问题是双重的,

    1. 静态链接需要什么,以及
    2. 动态链接需要什么

    我想我对第一次有更高的希望。

    1 回复  |  直到 15 年前
        1
  •  2
  •   anon    15 年前

    至少,代码必须是为同一个处理器系列编译的,您需要知道库和函数的名称。除此之外,你还需要同样的ABI。您应该知道,尽管人们认为C标准没有指定ABI,但是两个C编译器(或同一编译器的版本)完全有可能遵守该标准,在同一平台上运行,但具有不同的ABI。

    至于具体的架构细节,我必须承认我从来没有做过。您是否计划在不同的Linux变体上分发二进制库?