cryptcatをmacOSのソースからビルドしようとすると、
下記のようなエラーがたくさん出ます。
netcat.c:227:3: error: implicit declaration of function 'close' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
close (netfd);
^
netcat.c:228:3: error: implicit declaration of function 'sleep' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
sleep (1);
ご経験のある方で、直し方が分かる方がおられましたら情報いただければ幸いです。
よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No1です。
すみません、先にご紹介したシェルスクリプト"mkprglist"の最初の部分...
find . -follow -name "*.txt" -exec mklist {} \; >> ./prglist.tmp
ですが...
find . -follow -name "*.txt" -exec mklist {} \; > ./prglist.tmp
の誤りでした。お詫びして訂正いたします。
No.3
- 回答日時:
No1です。
C言語などとは全く関係のない、私が勝手に作った方法ですが...
次のリストに示す2つのシェルスクリプトを作成します。
名前を"mkprglist"とします。
#!/bin/csh -f
echo " 出力ファイル名はprglist.tmpです。"
echo ""
echo -n " よければ'リターンキー'を押してください。"
set wait = $<
find . -follow -name "*.txt" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "*.h" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "*.c" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "*.cpp" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "makefile*" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "Makefile*" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "*.def" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "*.src" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "*.htm" -exec mklist {} \; >> ./prglist.tmp
find . -follow -name "*.xml" -exec mklist {} \; >> ./prglist.tmp
名前を"mklist"とします。
#!/bin/csh -f
#
# 1.$1
# 表示させるファイル名を指定します。
#
#
echo ""
echo -n "++++++++++ファイル名:"
echo -n "$1"
echo "++++++++++"
echo ""
cat "$1"
echo ""
ファイルを作成した後、実行権を付加します。
1.ソースファイルの最上位ディレクトリの位置で mkprglist を起動します。
起動メッセージに対してEnterキーで答えます。
2.カレントディレクトリに prglist.tmp ファイルが(巨大な)作成されます。
3.このファイルをエディタで開くと以下の抜粋のようなリストになります。
void set_input_precision (mpc_fun_param_t *params, mpfr_...
void set_reference_precision (mpc_fun_param_t *params, mpfr_...
#endif /* __MPC_TESTS_H */
++++++++++ファイル名:./src/get_x.c++++++++++
/* mpc_get_dc, mpc_get_ldc -- Transform mpc number into C comp...
mpc_get_str -- Convert a complex number into a string.
Copyright (C) 2009, 2010, 2011, 2020 INRIA
4.全てのソースファイルが一つになりますので、検索キーワードで幾らでも探せます。
5.キーワード"+++++++..."を指定すれば、検索したワードを含むファイル名も簡単に確認できます。
6.VisualStudioでは、キーワードを全関係ファイルを検索する機能を持ちますが、極々単純ですがそれに相当する機能としていつも使ってます。
No.2
- 回答日時:
No1です。
問題のエラーが発生するnetcat.cはC言語のソースです。一方ご指摘のfarm9crypt.ccはC++のソースファイルですので、その中で...
extern "C" { #include "farm9crypt.h" }
でインクルードされているとすれば、farm9crypt.hはC言語のモジュールとして扱っていることになります。それ故、問題のfarm9crypt_initialized()関数プロトタイプがfarm9crypt.hファイルに格納されているのなら、それをC言語であるnetcat.cから利用するためには、単純に...
#include "farm9crypt.h"
で良いように思います。
ただ、問題は『何故この様な混乱が起きてしまったのか。』なのですが、考えてみても私にはよく解りません。
後、一つだけ下記のエラーが出るのですが、
netcat.c:1457:2: error: implicit declaration of function 'helpme' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
helpme(); /* exits by itself */
C99のhelpme()関数のインクルードファイルを探す方法とかあれば
教えてください。
No.1
- 回答日時:
『C99では関数'close'の暗黙の宣言は駄目よ。
』と言っているわけで、つまり関数の『プロトタイプがない。』と怒っているわけです。そもそもの原因は『これら関数のプロトタイプが格納されたヘッダファイルがインクルードされていない。』と考えるのが素直だと思います。
●関数'close'や'sleep’の実態はcryptcatソースコードの中にあるのでしょうか...
それぞれの関数がソースコード内に有るのならば、関数のプロトタイプを含むヘッダファイルも無ければおかしいと思います。
●関数の実態はソースの中にない...
つまり外部のライブラリからリンクされる関数だということになります。
それが上記のようなエラーに繋がると仮定すると...
1)そもそも必要なライブラリがインストールされていない。
2)ライブラリは有っても、そのプログラム開発キットであるヘッダファイルがインストールされていない。
などが考えられます。このような想定原因ならば、恐らくconfigure実行中に何かメッセージが表示されるのではないかと思われます。YES/NOの結果を注意深く確認するか、あるいはconfigure.logの中身をエディタで覗くこともできます。
ビルドの前にソフトウエアの依存ライブラリなどもう一度チェックすることも解決に近づく方法と思われます
上記エラーは、
#include <unistd.h>
することで出なくなったのですが、まだ
netcat.c:1510:5: error: implicit declaration of function 'farm9crypt_initialized' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
if (farm9crypt_initialized() == 0) {
^
netcat.c:1511:2: error: implicit declaration of function 'farm9crypt_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
farm9crypt_init(crypt_key_f9);
のようなエラーが出ます。これらの関数は、
farm9crypt.ccの中で,
extern "C"
{
#include "farm9crypt.h"
}
されているのですが、(farm9crypt.hは同ディレクトリにあります。)
cc -O -DGAPING_SECURITY_HOLE -DFREEBSD -o cryptcat netcat.c farm9crypt.o twofish2.o -lstdc++
するとエラーが出てしまうようなのですが、何が悪いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 Osseointegration has been suggested to represent a 3 2022/06/10 08:22
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- 英語 lead on Earth,” の意味の取り方 6 2022/12/06 10:52
- その他(プログラミング・Web制作) python のヘルプの疑問。 1 2022/12/11 14:54
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- 英語 The membrane itself is reduced to the function of 6 2023/01/29 20:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNIX上のプログラムで使うライ...
-
.NET(C#)でのスタックオーバー...
-
コンパイル時のエラー
-
DXライブラリの画像の表示の仕...
-
PHPとMYSQLでトーナメント表作成
-
遺伝的アルゴリズムのクラスラ...
-
vectorで自分のアプリを配布す...
-
汎用機とUNIXの違いについて
-
PDFファイルの文字を取得するプ...
-
gccでわざわざ-lmのようにライ...
-
マーキングができる地図ソフト...
-
AGPLv3の商用利用について
-
なぜIBMはEclipseを無償公開し...
-
商用ホームページでのjQuery等...
-
GPLソフトウエアの商用利用(社...
-
フリーソフトはどんなプログラ...
-
p-nand-q.comのSorted!のソフト...
-
フリーソフトのプログラム言語は
-
オープンソースソフトウェアは...
-
フォトショ ベクトルシェイプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UNIX上のプログラムで使うライ...
-
.NET(C#)でのスタックオーバー...
-
拡張子.niiのファイルの開き方...
-
Excel VBA のstr()関数でエラー
-
DXライブラリの画像の表示の仕...
-
PHPとMYSQLでトーナメント表作成
-
MakefileのLDLIBSとLOADLIBESの...
-
Googlemapのように画像を拡大・...
-
ファイルの圧縮/解凍(Zlib)に...
-
QRコード作成ライブラリ
-
OSX写真アプリへの複数のライブ...
-
【C#】PDFの作成や編集について
-
dxライブラリで作ったpcゲーム...
-
ライブラリParamQuery gridにつ...
-
PDFファイルの文字を取得するプ...
-
オブジェクトライブラリ
-
DxライブラリをVisualstudioを...
-
DLLについて。
-
AGPLとGPLのDLLを同時使用できるか
-
コンパイル時のエラー
おすすめ情報