
現在Ubuntu LinuxのgccでC言語のプログラムをやっています。
https://sourceforge.jp/projects/cc1101driver/scm …
このツリーのcode.hに ”const sig_code2_t PVC_TCP_SIG_CODE[100] = {” というコードを追加してmakeを行うと次のようなエラーが出て実行ファイルが出力されません。
(エラー内容)
---------------(中略)-----------------
gcc -o exe main.o event.o env.o audio.o task.o comm.o menu_show_status.o mount.o net.o misc.o -lpthread
event.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
env.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
audio.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
task.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
comm.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
mount.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
net.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
misc.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
collect2: error: ld returned 1 exit status
make: *** [exe] Error 1
この const sig_code2_t PVC_TCP_SIG_CODE[100] = {をコメントアウト正常にビルドできるのですが、
この問題を解決するにはどうすれば良いのかご教示頂きますようお願い致します。
No.1ベストアンサー
- 回答日時:
お約束の「ヘッダに実体を定義してはいけない」ってヤツです。
code.hに記述した内容はall_includes.hに適用されます。
all_includes.h内で#include "code.h"していますからね。
で、all_includes.hの内容はそれぞれ
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
つまり、code.hに記述した内容も
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。
リンクする段階でどのオブジェクトファイルのPVC_TCP_SIG_CODE[100]を使用したらいいのでしょうか?????
というエラーです。
extern宣言して、実体をどこかのソースファイルのみに記述する。
というのが一般的な対処方法です。
# static宣言にすればとりあえずリンクは通るかもしれませんが…無駄が出ますねぇ。
# 今回はconstなので、メモリに無駄が出るだけ…で済むかと思われますが。
http://d.hatena.ne.jp/saitodevel01/20110321/1300 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 Purpose: The tissue-engineered bone consisting of 1 2022/12/30 11:56
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- その他(プログラミング・Web制作) vscodeエラー 1 2022/05/01 21:01
- 英語 the code of computer 検索すると computer の前に a がなく、単数形 2 2023/04/24 06:03
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- 英語 英文の添削をお願いします 4 2023/05/23 11:10
- その他(プログラミング・Web制作) Pythonでのアニメーション 1 2023/06/01 15:58
- VPN 何これ 1 2022/04/19 01:32
- Visual Basic(VBA) CODE関数のvbaバージョンか方法はありますか? 5 2022/09/01 17:00
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
BC30002: 型 'ListItem' が定義...
-
ビルド失敗 指定されたファイ...
-
”wchar_t*型は渡せない”という...
-
キーの自動入力
-
HANDLEの宣言でのエラー
-
Fortran コンパイルエラーについて
-
borland c++ 致命的エラー
-
VC++ 2008 Express EditionでWi...
-
sys/time.hのインクルードがで...
-
RightとLeft関数のライブ...
-
HPB:エラー自動修復させない方...
-
arduinoのエラーメッセージ
-
書籍「ゲームプログラマになる...
-
Excelのエラーで困ってます。
-
SQLServerについて
-
subまたはfunctionが定義されて...
-
自己参照構造体のtypedef宣言と...
-
multiple definitionというエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
デバッグ中のエラーのことで教...
-
fortranでプログラムを実行する...
-
RightとLeft関数のライブ...
-
ビルド失敗 指定されたファイ...
-
Handlesについて
-
HEWを使用しているのですが、こ...
-
DLL関数を使ったプログラム
-
キーの自動入力
-
Visual Studioのstrcpy_sについて
-
コンパイルできません。
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報