我尝试从C程序调用编译的NASM函数时未定义的引用错误

时间:2014-06-08 13:59:17

标签: c linux gcc nasm undefined-reference

我有一个c程序,为了优化这个程序我试过这个:

  1. 分别编译最重的方法(名为 my_method
  2. 反汇编已编译的方法
  3. 编辑从编译器生成的汇编代码以优化此
  4. 使用NASM编译器编译编辑和优化的汇编代码
  5. 原始c方法有此签名

    float **my_method(int m, int n, float **MatrixA, float **VectorB){
       //method boby
    }
    

    问题: 如何调用已编译的优化" NASMed"来自C?

    的方法版本

    我试图在c文件的开头声明这个

    extern float **my_method(int m, int n, float **MatrixA, float **VectorB);
    

    但是当我尝试使用

    调用c中的方法时
    float **res= mymethod(rows, columns, matrix1, vect);
    

    GCC将此错误返回给我: 对my_method的未定义引用

    已编译的程序集文件名为my_method.o,我的c文件名为my_program.c

    我尝试使用gcc my_program.c

    进行编译

1 个答案:

答案 0 :(得分:1)

您可能喜欢使用类似

的内容
gcc -Wall -Wextra -pedantic my_program.c -o my_program my_method.o

my_method.o是NASM编译的结果。