linux g 使用,linux-无法使用g进行编译

现在,我尝试使用一种名为“ GAUL”的开源工具,其中实现了一些遗传算法.通过编译示例文件,我发现只能使用gcc来编译这些数据,而不能使用g来编译. E.x .:

1)使用gcc -I /usr/local/include / -c wildfire_threat.c -o test.o

gcc ** -g -O2 -Wall -o test2.out test.o -lgaul -lgaul_util -lm -lpthread -lslang -lm

也可以组合

gcc -I /usr/local/include / -c wildfire_threat.c -o test.o

g -g -O2 -Wall -o test2.out test.o -lgaul -lgaul_util -lm -lpthread -lslang -lm

但是2)使用

g -I /usr/local/include / -c wildfire_threat.c -o test.o

g -g -O2 -Wall -o test2.out test.o -lgaul -lgaul_util -lm -lpthread -lslang -lm

我收到以下错误消息:

test.o: In function `wildfire_simulation(int*, bool)':

wildfire_threat.c:(.text+0x52): undefined reference to `random_int(unsigned int)'

wildfire_threat.c:(.text+0x74): undefined reference to `random_int(unsigned int)'

test.o: In function `wildfire_score(population_t*, entity_t*)':

wildfire_threat.c:(.text+0xb55): undefined reference to `ga_entity_set_fitness(entity_t*, double)'

test.o: In function `wildfire_seed(population_t*, entity_t*)':

wildfire_threat.c:(.text+0xb86): undefined reference to `random_boolean()'

wildfire_threat.c:(.text+0xbb9): undefined reference to `random_boolean_prob(double)'

wildfire_threat.c:(.text+0xc18): undefined reference to `random_int(unsigned int)'

wildfire_threat.c:(.text+0xc25): undefined reference to `random_int(unsigned int)'

wildfire_threat.c:(.text+0xc92): undefined reference to `random_int(unsigned int)'

test.o: In function `wildfire_mutate_flip(population_t*, entity_t*, entity_t*)':

wildfire_threat.c:(.text+0xd41): undefined reference to `random_int(unsigned int)'

test.o: In function `wildfire_crossover(population_t*, entity_t*, entity_t*, entity_t*, entity_t*)':

wildfire_threat.c:(.text+0xe25): undefined reference to `random_boolean()'

wildfire_threat.c:(.text+0xe37): undefined reference to `random_int(unsigned int)'

wildfire_threat.c:(.text+0xff0): undefined reference to `random_int(unsigned int)'

test.o: In function `wildfire_ga_callback(int, population_t*)':

wildfire_threat.c:(.text+0x11bc): undefined reference to `ga_get_entity_from_rank(population_t*, unsigned int)'

wildfire_threat.c:(.text+0x11c4): undefined reference to `ga_entity_get_fitness(entity_t*)'

wildfire_threat.c:(.text+0x11ef): undefined reference to

`ga_population_score_and_sort(population_t*)'

wildfire_threat.c:(.text+0x1206): undefined reference to `ga_fitness_mean_stddev(population_t*, double*, double*)'

wildfire_threat.c:(.text+0x122b): undefined reference to `ga_get_entity_from_rank(population_t*, unsigned int)'

wildfire_threat.c:(.text+0x1233): undefined reference to `ga_entity_get_fitness(entity_t*)'

wildfire_threat.c:(.text+0x1268): undefined reference to `ga_get_entity_from_rank(population_t*, unsigned int)'

wildfire_threat.c:(.text+0x1270): undefined reference to `ga_entity_get_fitness(entity_t*)'

test.o: In function `main':

wildfire_threat.c:(.text+0x12b0): undefined reference to `random_seed(unsigned int)'

wildfire_threat.c:(.text+0x12dd): undefined reference to `ga_select_two_roulette_rebased(population_t*, entity_t**, entity_t**)'

wildfire_threat.c:(.text+0x12e6): undefined reference to `ga_select_one_roulette_rebased(population_t*, entity_t**)'

wildfire_threat.c:(.text+0x132e): undefined reference to `ga_genesis_integer(int, int, int, bool (*)(int, population_t*), bool (*)(int, entity_t*), void (*)(void*), void (*)(void*), bool (*)(population_t*, entity_t*), bool (*)(population_t*, entity_t*), entity_t* (*)(population_t*, entity_t*), bool (*)(population_t*, entity_t**), bool (*)(population_t*, entity_t**, entity_t**), void (*)(population_t*, entity_t*, entity_t*), void (*)(population_t*, entity_t*, entity_t*, entity_t*, entity_t*), void (*)(population_t*, entity_t*), void*)'

wildfire_threat.c:(.text+0x135c): undefined reference to `ga_population_set_parameters(population_t*, ga_scheme_type_t, ga_elitism_type_t, double, double, double)'

wildfire_threat.c:(.text+0x136d): undefined reference to `ga_evolution_threaded(population_t*, int)'

wildfire_threat.c:(.text+0x137e): undefined reference to `ga_get_entity_from_rank(population_t*, unsigned int)'

wildfire_threat.c:(.text+0x1386): undefined reference to `ga_entity_get_fitness(entity_t*)'

wildfire_threat.c:(.text+0x13b5): undefined reference to `ga_get_entity_from_rank(population_t*, unsigned int)'

wildfire_threat.c:(.text+0x1434): undefined reference to `ga_get_entity_from_rank(population_t*, unsigned int)'

wildfire_threat.c:(.text+0x1528): undefined reference to `ga_extinction(population_t*)'

collect2: ld returned 1 exit status

谁能向我解释这个谜,以及如何避免使用gcc,因为这会给我想要嵌入的其余源代码带来问题?

解决方法:

您的第三方C库的标头中可能缺少extern“ C”声明.要解决此问题而无需修改第三方标头,则可以在C源代码中无论您在#include相关的第三方标头中执行以下操作:

extern "C" {

#include "gaul.h" // note: I'm just guessing the names of the

#include "gaul_utils.h" // actual header files here...

}

标签:gcc,g,gaul,linux,compilation

来源: https://codeday.me/bug/20191031/1977198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值