c/C++ プログラムをコンパイルできません。リンカーの問題です。

c/C++ プログラムをコンパイルできません。リンカーの問題です。

これはここに2番目の投稿であり、勉強を妨げる大きな問題があるので、できるだけ早く修正する必要があります!

私のgccはうまく動作しています。 FairThreads(C言語)で作業する必要があります。次のアーカイブをダウンロードしました。

公正な糸

ご覧のとおり、/srcにmakeFileがあり、2行目を置き換えました。

LIB_DIR     = ../lib

渡す LIB_DIR = /usr/bin/ld

"make"コマンドでmakeFileをコンパイルしました。

これで、c/c++ プログラムをコンパイルできなくなりました。でもHello Worldプログラムも。

コンパイルしようとするたびに、端末に次のエラーメッセージが表示されます。

/usr/bin/ld: 2: /usr/bin/ld: Syntax error: newline unexpected
collect2: error: ld returned 2 exit status

このソリューションをオンラインで見つけましたが、私には効果がありません。

sudo apt-get autoremove binutils    
sudo apt-get install binutils

また、実行時にgccを再インストールしてみました。

sudo apt-get purge gcc 

私は持っています:

Des erreurs ont été rencontrées pendant l'exécution :
  linux-firmware
  linux-image-generic-hwe-18.04
  linux-generic-hwe-18.04
E: Sub-process /usr/bin/dpkg returned an error code (1)

しかし、gcc --versionを試すと見つからないというメッセージが表示されます。

したがって、再インストールするためにコマンドを実行すると、次のようになります。

sudo apt-get install gcc 

私はまた次を得ます:

Des erreurs ont été rencontrées pendant l'exécution :
 linux-firmware
 linux-image-generic-hwe-18.04
 linux-generic-hwe-18.04
 linux-image-5.4.0-72-generic
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

しかし、gcc --versionはそれがインストールされたことを伝えます。

最後にプログラムをコンパイルしようとすると、次の結果が表示されます。

/usr/bin/ld: 2: /usr/bin/ld: Syntax error: newline unexpected
collect2: error: ld returned 2 exit status

うまく説明すれば解決策が得られることを願っています。

編集1:

以下を実行してbin / ldを削除しようとすると:

sudo rm -fr /usr/bin/ld;sudo apt-get install --reinstall binutils

私は持っています:

Des erreurs ont été rencontrées pendant l'exécution :
 linux-firmware
 linux-image-generic-hwe-18.04
 linux-generic-hwe-18.04
 linux-image-5.4.0-72-generic
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

そして、この特定のエラーメッセージは次のとおりです。

WARNING: no ldd around - install libc-bin

編集する:

次のコマンドでlddをインストールしました。

sudo apt-get install libc-bin

まだ変化はありません...

ベストアンサー1

バイナリを上書きしました/usr/bin/ld(そうは言っていませんが、makerootとして実行しているとします)。

/usr/bin/ld通常のビルド環境を使用するには、アンインストールして再インストールする必要があります。

Debian派生バージョンを使用している場合は、sudo rm -rf /usr/bin/ld;sudo apt-get install --reinstall binutilsこれを行う必要があります。

おすすめ記事