【问题标题】:Link math.h with gprbuild将 math.h 与 gprbuild 链接
【发布时间】:2021-06-07 04:51:25
【问题描述】:

我正在尝试构建一个调用 C 代码的 Ada 应用程序。 C 代码使用来自math.h 的函数sqrt。如果我删除对sqrt 的调用,编译和链接将完美运行。当我尝试使用sqrt 调用时,链接器告诉我undefined reference to sqrt

这是我的 gpr 文件:

project Struct_Interfacing is
    for Languages use ("Ada", "C");

    for Source_Dirs use ("src");
    for Object_Dir use "obj";
    for Exec_Dir use ".";

    for Main use ("struct_interfacing.adb");

    package Compiler is
        C_Switches := ("-pedantic", "-Wall", "-Werror");
        for Default_Switches("C") use C_Switches;
    end Compiler;

    package Linker is
        for Default_Switches("C") use ("-lm");
    end Linker;
end Struct_Interfacing;

我认为解决方案是for Default_Switches("C") use ("-lm");,但它仍然不起作用。

【问题讨论】:

    标签: gcc ada gprbuild


    【解决方案1】:

    您的主程序在 Ada 中, 所以你应该告诉你的编译器将 Ada 与-lm 链接起来,即使调用是从 C 发出的:

        package Linker is
            for Default_Switches("Ada") use ("-lm");
        end Linker;
    

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 1970-01-01
      • 2014-09-26
      • 2017-03-04
      • 2019-08-08
      • 1970-01-01
      • 2023-01-17
      • 2012-01-19
      • 2018-09-30
      相关资源
      最近更新 更多