首页 > 解决方案 > 程序集别名和符号

问题描述

1.cpp:

int meth() {
    return 0;
}
__asm__(".global  meth_alias \n meth_alias  = meth");
__asm__(".global  meth_alias2 \n meth_alias2  = meth");

2.cpp:

int meth_alias();
int meth_alias2();
int test()
{
    return meth_alias()+ meth_alias2();
}

建造:

g++ -c -fPIC 1.cpp
g++ -c -fPIC 2.cpp
g++ -o 12.so --shared 1.o 2.o

1.o中应该有符号“meth_alias”和“meth_alias2”,但是如何用nm/objdump/readelf打印这些符号呢?现有的命令标志仅将别名显示为一个未定义的符号,称为原始名称“meth”。每个别名不应该有一个条目吗?

别名只是符号表中的普通符号,即名称+地址和地址与原始方法相同吗?

标签: cassemblylinkerstatic-linking

解决方案


推荐阅读