0

wkhtmltopdf最新のソースからコンパイルしようとしています。私はUbuntu 12.10 x64サーバーエディションを使用しています。

herehereの手順を使用しました。

コンパイルについてはwkhtmltopdf-qt、著者が述べたように、新しい Git リポジトリがgitorious.org/~antialize/qt/antializes-qt.gitブランチにあり4.8.2ます。だから、それは私も使ったものです。

すべてうまくいきました。両方 (qt と wkhtmltopdf) のコンパイルが正常に完了しました。しかし、ルートとしてのみ wkhtmltopdf を使用できました (sudo を使用)。他のユーザーとして実行すると、次のエラーが発生しました。

error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory.

root ユーザーのホーム ディレクトリ (/root) 内のファイルを使用して、すべてのコンパイルを root として実行しました。wkhtmltopdf プログラムはwkqt、コンパイルされた qt が存在するディレクトリ (およびlibQtWebKit.so.4ファイル) を読み取る必要があると推測しました。このディレクトリは root ユーザーのホーム ディレクトリ内にもあったため、他のユーザーが を実行できませんwkhtmltopdfでした。

ということで、一からやり直すことにしました。今回は、すべてのソースファイル (wkhtmltopdf-qtwkhtmltopdf)を に入れます/usr/wkhtmltopdfqmakeしかし、qt のコンパイル中に、コンパイラが qt ソースが存在していた以前の (古い) 場所にアクセスしようとするとエラーが発生します( /root/wkhtmltopdf-qt)。

以下のエラー:

ln -s libQtDeclarative.so.4.8.2 libQtDeclarative.so
ln -s libQtDeclarative.so.4.8.2 libQtDeclarative.so.4
ln -s libQtDeclarative.so.4.8.2 libQtDeclarative.so.4.8
rm -f ../../lib/libQtDeclarative.so.4.8.2
rm -f ../../lib/libQtDeclarative.so
rm -f ../../lib/libQtDeclarative.so.4
rm -f ../../lib/libQtDeclarative.so.4.8
mv -f libQtDeclarative.so.4.8.2 libQtDeclarative.so libQtDeclarative.so.4 libQtDeclarative.so.4.8 ../../lib/
make[1]: Leaving directory `/usr/wkhtmltopdf/wkhtmltopdf-qt/src/declarative'
cd src/3rdparty/webkit/Source/ && make -f Makefile.WebKit 
make[1]: Entering directory `/usr/wkhtmltopdf/wkhtmltopdf-qt/src/3rdparty/webkit/Source'
/root/wkhtmltopdf-qt/bin/qmake -spec ../../../../mkspecs/linux-g++-64 -o Makefile.WebKit WebKit.pro
make[1]: /root/wkhtmltopdf-qt/bin/qmake: Command not found
make[1]: *** [Makefile.WebKit] Error 127
make[1]: Leaving directory `/usr/wkhtmltopdf/wkhtmltopdf-qt/src/3rdparty/webkit/Source'
make: *** [sub-webkit-make_default-ordered] Error 2

まったく新しいソースコードから始めているときに、これがどのように可能であるかがわかりません。

wkhtmltopdf-qt以前にインストールした を完全に削除 (アンインストール) する方法はありwkhtmltopdfますか?

助けていただければ幸いです。ありがとう。

4

1 に答える 1

0

さて、私はそれを理解しました。

どうやら、ソースコードは思ったほど新鮮ではありませんでした。

私は、QT ソース ディレクトリの Git 作業コピーにある追跡されていない変更済みファイルをクリーニングしていました。実行git statusすると、変更されたファイルは表示されませんでした。しかし、私が見逃していたのは、以前のコンパイルに関する情報がまだ残っている、git で無視されたフォルダーとファイルがたくさんあったことです。これらのファイルとフォルダは に表示されませんでしたgit status

そのため、ファイルを一時的に.gitignoreレポ外に移動して実行しましgit clean -fdた。これにより、不要なファイルがすべて消去されました。次に、.gitignoreファイルを元に戻しました。安全のために、git checkout -- .HEAD からすべてのファイルの最新バージョンを取得するためにも実行しました。

その後、コンパイルは機能しました。

于 2013-01-21T22:16:46.497 に答える