寻找 GNU 链接器错误的解决方法

寻找 GNU 链接器错误的解决方法

一段时间以来(大概 12 年),GNU 链接器包含了对 Sun 在 1993 年引入的版本化共享库的链接器映射文件的支持。

不幸的是,GNU 链接器拒绝正确的链接器映射文件,但喜欢以相反的顺序查看类似的映射文件。

正确的链接器映射文件如下所示:

SCHILY_3 {
global:
    function5;
    function6;
local:
     *;
} SCHILY_2;

SCHILY_2 {
global:
    function3;
    function4;
local:
     *;
} SCHILY_1;

SCHILY_1 {
global:
    function1;
    function2;
local:
     *;
};

然而 GNU 链接器似乎喜欢这样:

SCHILY_1 {
global:
    function1;
    function2;
local:
     *;
};

SCHILY_2 {
global:
    function3;
    function4;
local:
     *;
} SCHILY_1;

SCHILY_3 {
global:
    function5;
    function6;
local:
     *;
} SCHILY_2;

有人知道如何自动将第一个正确形式转换为第二个正确形式以使用 UNIX/LINUX 板载程序吗?

答案1

在朋友的正确基本想法的帮助下,我已经能够找到过滤器的解决方案:

| sed 's/^SCHILY/+SCHILY/' | tr '\012' '@' | tr '+' '\012' | sort -t. -n -k1 -k2 -k3 |  tr '@' '\012'

这首先sed 使块开始唯一,第一个tr删除换行符,第二个tr使块开始单独的行,该sort命令创建所需的顺序,最后一个tr命令恢复所有换行符。

sed命令有点复杂,因为它需要处理最多三个级别的排序。

相关内容