[英]Linking with GHC
我正在關注這個簡短的教程
並嘗試使用GHC(Glasgow Haskell編譯器,版本7.10.1)通過以下命令編譯Webots應用程序(用C編寫):
ghc --make -no-hs-main -optc-O
-I"/Applications/Webots/include/controller/c/"
-L"/Applications/Webots/lib/"
-outputdir build/release/
advanced_genetic_algorithm_supervisor.c
Safe
-o advanced_genetic_algorithm_supervisor
並在鏈接階段得到以下錯誤:
Linking advanced_genetic_algorithm_supervisor ...
Undefined symbols for architecture x86_64:
"_wb_display_draw_text", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_display_get_height", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_display_get_width", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_emitter_send", referenced from:
_evaluate_genotype in advanced_genetic_algorithm_supervisor.o
"_wb_receiver_enable", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_receiver_get_data", referenced from:
_check_for_slaves_data in advanced_genetic_algorithm_supervisor.o
"_wb_receiver_get_queue_length", referenced from:
_check_for_slaves_data in advanced_genetic_algorithm_supervisor.o
"_wb_receiver_next_packet", referenced from:
_check_for_slaves_data in advanced_genetic_algorithm_supervisor.o
"_wb_robot_cleanup", referenced from:
_run_optimization in advanced_genetic_algorithm_supervisor.o
"_wb_robot_get_basic_time_step", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_robot_get_device", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_robot_init", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_robot_step", referenced from:
_run_seconds in advanced_genetic_algorithm_supervisor.o
_evaluate_genotype in advanced_genetic_algorithm_supervisor.o
"_wb_supervisor_field_get_sf_rotation", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_supervisor_field_get_sf_vec3f", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_supervisor_field_set_sf_rotation", referenced from:
_evaluate_genotype in advanced_genetic_algorithm_supervisor.o
"_wb_supervisor_field_set_sf_vec3f", referenced from:
_evaluate_genotype in advanced_genetic_algorithm_supervisor.o
"_wb_supervisor_node_get_field", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
"_wb_supervisor_node_get_from_def", referenced from:
_main in advanced_genetic_algorithm_supervisor.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我相信這意味着編譯器無法找到函數(“符號”),盡管它設法通過編譯過程來解析使用-I路徑在程序中指定的所有包含項
這意味着鏈接器找不到那些函數/符號,因為您沒有告訴它要與Webots庫鏈接。
假設庫文件名為/Applications/Webots/lib/libsomething.dylib
(或libsomething.a
),則需要添加-lsomething
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.