mrcImageCTFCompensation
【問題内容】 mrcImageCTFCompensation実行時にオプション-info2を使用するとセグメンテーションエラーが発生します。 【エラー箇所】 (ファイル名) /Eos/src/Tools/mrcImage/mrcImageCTFCompensation/src/mrcImageCTFCompensation.c 68行目付近にてエラーとなっているようです。 ctfInfoRead(fpt, &CTFInfo, "", 0); (ファイル名) /Eos/src/Objects/DataManip/ctfInfo/src/ctfInfoRead.c 37行目付近にてheadlabelがnullになっており、次の行で使用しているためにエラーとなっているようです。 headlabel = strdup(label); 【補足】 他にもmatrix3DFromEulerAngleなどstrdupを使用している関数でもエラーが発生しました。 現在で登録すべきライブラリが足りていないのでしょうか。 【追記】 経過報告です。 Eos/src/Objects/DataManip/ctfInfoにてmakeをしましたところ下記のようなワーニングが出ていました。 /Eos/src/Objects/DataManip/ctfInfo/src/ctfInfoRead.c:36:16: warning: implicit declaration of function 'strdup' is invalid in C99 [-Wimplicit-function-declaration] headlabel = strdup(label); 「C99においてstrdupが無効です」という意味かと思いますが、こちらが問題になっているかはまだ分かりません。 【追記】 makeの途中で下記のようなリンクエラーが起きていました。 gcc --std=gnu99 -shared -L/Users/teppeikinoshita/Eos/lib/X86MAC64/ -L/Users/teppeikinoshita/Eos/util/X86MAC64/lib/ruby/1.9.1/x86_64-darwin13.2.0 -o libctfInfo.so ctfDeterminationFromPhaseComparison.sharedo ctfFunction.sharedo ctfInfoPVM.sharedo ctfInfoRead.sharedo ctfInfoWrite.sharedo ctfInfoWrite2.sharedo ctfWeight.sharedo ctfZeroPoint.sharedo lastigmatismDetection.sharedo lctfDetermination.sharedo lctfDetermine.sharedo lmolecularEnvelope.sharedo lmrcFSInfoScatteringAngularDistributionAverageSection.sharedo powerspectraTangentLine.sharedo thonRing.sharedo Undefined symbols for architecture x86_64: "_fileLineNumberGet2", referenced from: _lmolecularEnvelopeFileRead in lmolecularEnvelope.sharedo -中略- "_vector", referenced from: _lctfDeterminationbyFittingMethods in lctfDetermination.sharedo ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: [libctfInfo.so] Error 1 (ignored)
OS-Xにおいて、strdupはinline関数になっています。strcmpの警告文に対して、inlineをはずすようにccのオプションを変更したために生じたことです。それ以外では問題が生じていませんでした。コンパイルオプションを元に戻しました。これで終了しています。
Details