64ビットで32ビットアプリをコンパイルすると、-lX11が見つかりません


9

私は次のようなコマンドを呼び出しています:

g++ ... -o"myapp" -lX11 ...

そして得る

/usr/bin/ld: cannot find -lX11

multiarchをサポートするために、次のパッケージをインストールしました。

ia32-libs, libc6-dev-i386 and g++-multilib

しかし、役に立たない。/ usr / lib32にはX11.soがないようですが、実際にはそのディレクトリには52のライブラリしかありません。ライブラリを手動でインストールする必要があると思いますが、次に何をチェックするべきか迷っています。

助けてくれてありがとう。


1
コマンドの出力を表示できますldconfig -p | grep libX11\\.か?
Martin Dirichs、

回答:


5

-devライブラリパッケージ自体ではなく、パッケージによって提供されるヘッダーファイルが必要です。だから、インストールしてみてくださいlibx11-dev。他のライブラリについて同様のエラーが発生する可能性があります(その後、それらの-devパッケージをインストールできます)。

これらのパッケージはバイナリではなくヘッダーファイルを提供し、一般にヘッダーファイルはプリプロセッサーマクロを使用してサポートされるすべてのアーキテクチャを説明しますが、それでも-devUbuntuのパッケージはアーキテクチャ固有である傾向があり、これはlibx11-devここでは、リリースを拡張.deblibx11-dev、そのリリースでリストされているパッケージを見つけます)。Ubuntuシステムは64ビットであり、32ビットバージョンのライブラリにリンクする必要がある32ビットプログラムをコンパイルしているため、おそらく32ビットバージョンのをインストールする必要がありますlibx11-devapt-getまたはを使用してインストールする場合は、インストールするパッケージとしてaptitude指定することでそれを指定できますlibx11-dev:i386multarch以降 サポートされ、使用されています)。

http://packages.ubuntu.com/は、-devライブラリパッケージに対応するパッケージの名前を見つけるための優れたリソースです。必ずしも直後にライブラリパッケージの名前が続くとは限りません-dev。ライブラリパッケージ名、特にの後のバージョン番号が、対応するパッケージの名前にない-場合があります。-dev

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.