2017-06-07 8 views
0

ラズベリーパイのシナプスマネージャーからFANN(Fast artificial neural network)ライブラリーをダウンロードしました。私は、以下に示すように、デフォルトのアプリケーションを実行しようとしています:ラズベリーパイ3、fann_create_standardが定義されていません

#include "fann.h" 
#include "floatfann.h" 
include "fann_data.h" 

int main() 
{ 
const unsigned int num_input = 2; 
const unsigned int num_output = 1; 
const unsigned int num_layers = 3; 
const unsigned int num_neurons_hidden = 3; 
const float desired_error = (const float) 0.001; 
const unsigned int max_epochs = 500000; 
const unsigned int epochs_between_reports = 1000; 

struct fann *ann = fann_create_standard(num_layers, num_input, 
    num_neurons_hidden, num_output); 

fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC); 
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC); 

fann_train_on_file(ann, "xor.data", max_epochs, 
    epochs_between_reports, desired_error); 

fann_save(ann, "xor_float.net"); 

fann_destroy(ann); 

return 0; 
} 

私はこの出力を取得しています:以下のように

enter code here 


||=== Build: Debug in ArtificialNeuralNetworkExample (compiler: GNU GCC Compi ler) ===| 
obj/Debug/main.o||In function `main':| 
/home/pi/Documents/ArtificialNeuralNetworkExample/main.c|14|undefined reference to `fann_create_standard'| 
/home/pi/Documents/ArtificialNeuralNetworkExample/main.c|17|undefined reference to `fann_set_activation_function_hidden'| 
/home/pi/Documents/ArtificialNeuralNetworkExample/main.c|18|undefined reference to `fann_set_activation_function_output'| 
/home/pi/Documents/ArtificialNeuralNetworkExample/main.c|20|undefined reference to `fann_train_on_file'| 
/home/pi/Documents/ArtificialNeuralNetworkExample/main.c|23|undefined reference to `fann_save'| 
/home/pi/Documents/ArtificialNeuralNetworkExample/main.c|25|undefined reference to `fann_destroy'| 
||=== Build failed: 6 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===| 

gccを使用してライブラリをリンクしてみました:

gcc -lfann main.c 

ありません何をすべきか確かめてください。

答えて

0

私は、コンパイルステートメントでライブラリが表示される順序を変更する必要があると思います。

gcc -lfann main.c 

main.cに使用される機能として

gcc main.c -lfann 

であるべきではlibfann.soで存在します。 online gcc manual

-l library

を引用

[...]それは、コマンドにこのオプションを書き違いが。リンカーは指定された順序でライブラリとオブジェクトファイルを検索して処理します。したがって、ファイルfoo.oの後、bar.oの前にfoo.o -lz bar.oがライブラリzを検索します。 bar.ozの関数を参照する場合、それらの関数はロードされない可能性があります。あなたのケースでは

ライブラリから関数がmain.c

+0

バージョンで使用されているように、あなたが同様のシナリオに直面している、あなたのケースのために、ライブラリがmain.c後に表示されることができます場合は2.1.0です。 – Jon

+0

私はこれをしましたが、端末から出力が得られません – Jon

+0

Nvm、それを得ました。出力のために./a.outを入力する必要がありました – Jon