【问题标题】:link c function in nasmnasm中的链接c函数
【发布时间】:2011-03-19 22:09:23
【问题描述】:

有一个 nasm 项目,我正在从中调用一个 c 函数

我把函数名放在“extern”里

链接时我将所有链接放在一起,但我可能会出现“未定义引用”的错误

这是我的编译/链接命令

gcc -o Project4 Project4.o array1c.c readdouble.o writedouble.o readarray.o printarray.o addarray.o invertarray.o invertarray2.o invertarray3.o averagearray.o quicksort.c

【问题讨论】:

  • 我以前用ld,我觉得命令是ld -o bin_name files.o

标签: c assembly nasm


【解决方案1】:

我会首先使用“gcc -c”命令将所有 .c 文件编译成目标文件,然后将这些生成的 .o 文件(例如“array1c.o”和“quicksort.o”)与你的其他预先存在的目标文件,看看是否仍然给你一个未定义的引用。这可能是一个不必要的步骤,但我从未在一次 gcc 调用中合并原始 .c 文件和 .o 文件。

您可能还必须在任何调用的 c 函数的开头添加下划线......我知道这是一个依赖于平台的东西(即,Linux 通常不需要 c 函数上的下划线,而 OSX 和一些其他 UNIX 平台可以)。

最后,您可以尝试使用 ld 一次将所有目标文件链接在一起,而不是将一些目标文件链接到 Project4.o 中,然后将其链接到您使用 nasm 组装的内容(至少这是我假设你在做什么,即你正在制作一个 Project4.o,然后在你的汇编代码中调用它的函数)。

希望对你有帮助,

杰森

【讨论】:

  • 感谢您的回复,现在可以使用了,有时编程和编译速度太快,导致小错误,比如拼写不一样
猜你喜欢
  • 2011-01-29
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 2018-09-24
相关资源
最近更新 更多