gpt4 book ai didi

gcc:错误:无法识别的选项 --wrap

转载 作者:行者123 更新时间:2023-12-01 22:35:04 27 4
gpt4 key购买 nike

[更新]很抱歉在最上面发帖,但首先了解这一点可能会有所帮助,因为它可能会改变问题。

--wrap是链接器的一个选项 ld ,而不是gcc .

但是我的 Eclipse 项目正在使用 gcc用于链接阶段。

如何根据 cmocka 的需要使用换行函数单元测试?

<小时/>

我正在使用gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 .

我正在尝试使用链接器选项 --wrap按照规定here为了使用 cmocka对 C 代码进行单元测试。

错误是

make all 
Building target: unit_test_C_code_example_project
Invoking: GCC C Linker
gcc --wrap=add -o "unit_test_C_code_example_project" ./test_scripts/test_maths.o ./software_under_test/mocks/mock_add.o ./software_under_test/maths.o -lcmocka
gcc: error: unrecognized option ‘--wrap=add’
make: *** [unit_test_C_code_example_project] Error 1

因此,链接器正在提示 --wrap=add选项,但我不知道为什么。

<小时/>

不可避免地,如果我不发布代码,有人会请求它,所以就是这样,尽管我怀疑它与链接器选项问题相关:

在我的单元测试主体中,我有

static void test_multiply_two_by_three(void **state)
{
will_return(__wrap_add(0, 2), 2);
will_return(__wrap_add(2, 2), 4);
will_return(__wrap_add(4, 2), 6);

assert_int_equal(multiply(2, 3), 6);
}

在另一个文件中,我声明了模拟函数

int __wrap_add(int a, int b)
{
return mock();
}

并且,在我的被测软件中,调用要包装的函数

int multiply(int x, int y)
{
int total = 0;
int i;

for (i = 0; i < y; i++)
total += add(total, x);

return total;
}

请注意,没有名为 add() 的函数构建中的任何地方。我想要实现的是使用 __wrap_add 来模拟该函数。链接器选项。为什么链接器拒绝它?

最佳答案

您可以使用 -Wl,<linker-option> 将选项传递给链接器。或者有 -Xlinker <option>对于某些版本的 gcc。试试gcc -Wl,--wrap=add ...

关于gcc:错误:无法识别的选项 --wrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33278164/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com