簡體   English   中英

Mac OS X鏈接器

[英]Mac OS X Linker

因此,我嘗試為Mac OS X Mavericks編譯其中一種山寨幣(比特幣副本)QT客戶端,並在一段時間后失去了所有內容的組合(boost,db48,miniupnpc,qt 4.8.5和qt creator 2.5.2),我可以進行編譯代碼,但是到達鏈接文件階段時,出現“架構x86_64的未定義符號”錯誤。 這是整個輸出:

g++ -headerpad_max_install_names -fstack-protector -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -o Bosscoin-Qt.app/Contents/MacOS/Bosscoin-Qt build/macdockiconhandler.o build/bitcoin.o build/bitcoingui.o build/transactiontablemodel.o build/addresstablemodel.o build/optionsdialog.o build/sendcoinsdialog.o build/addressbookpage.o build/signverifymessagedialog.o build/aboutdialog.o build/editaddressdialog.o build/bitcoinaddressvalidator.o build/version.o build/sync.o build/util.o build/netbase.o build/key.o build/script.o build/main.o build/init.o build/net.o build/irc.o build/checkpoints.o build/addrman.o build/db.o build/walletdb.o build/json_spirit_writer.o build/json_spirit_value.o build/json_spirit_reader.o build/clientmodel.o build/guiutil.o build/transactionrecord.o build/optionsmodel.o build/monitoreddatamapper.o build/transactiondesc.o build/transactiondescdialog.o build/bitcoinstrings.o build/bitcoinamountfield.o build/wallet.o build/keystore.o build/transactionfilterproxy.o build/transactionview.o build/walletmodel.o build/bitcoinrpc.o build/rpcdump.o build/rpcnet.o build/rpcrawtransaction.o build/overviewpage.o build/csvmodelwriter.o build/crypter.o build/sendcoinsentry.o build/qvalidatedlineedit.o build/bitcoinunits.o build/qvaluecombobox.o build/askpassphrasedialog.o build/protocol.o build/notificator.o build/qtipcserver.o build/rpcconsole.o build/scrypt.o build/miningpage.o build/noui.o build/moc_bitcoingui.o build/moc_transactiontablemodel.o build/moc_addresstablemodel.o build/moc_optionsdialog.o build/moc_sendcoinsdialog.o build/moc_addressbookpage.o build/moc_signverifymessagedialog.o build/moc_aboutdialog.o build/moc_editaddressdialog.o build/moc_bitcoinaddressvalidator.o build/moc_clientmodel.o build/moc_guiutil.o build/moc_optionsmodel.o build/moc_monitoreddatamapper.o build/moc_transactiondesc.o build/moc_transactiondescdialog.o build/moc_bitcoinamountfield.o build/moc_transactionfilterproxy.o build/moc_transactionview.o build/moc_walletmodel.o build/moc_overviewpage.o build/moc_csvmodelwriter.o build/moc_sendcoinsentry.o build/moc_qvalidatedlineedit.o build/moc_qvaluecombobox.o build/moc_askpassphrasedialog.o build/moc_notificator.o build/moc_miningpage.o build/moc_rpcconsole.o build/moc_macdockiconhandler.o build/qrc_bitcoin.o
-F/Library/Frameworks -L/Library/Frameworks -lminiupnpc -framework Foundation -framework ApplicationServices -framework AppKit -L/opt/local/lib -L/opt/local/lib/db48 -lssl -lcrypto -ldb_cxx-4.8 -lboost_system-mt -lboost_filesystem-mt -lboost_program_options-mt -lboost_thread-mt -framework QtGui -framework QtCore 
 Undefined symbols for architecture x86_64:
 "boost::program_options::to_internal(std::string const&)", referenced from:
 boost::program_options::detail::basic_config_file_iterator<char>::getline(std::string&) in util.o
 "boost::program_options::detail::common_config_file_iterator::common_config_file_iterator(std::set<std::string, std::less<std::string>, std::allocator<std::string> > const&, bool)", referenced from:
 boost::program_options::detail::basic_config_file_iterator<char>::basic_config_file_iterator(std::istream&, std::set<std::string, std::less<std::string>, std::allocator<std::string> > const&, bool) in util.o
 ld: symbol(s) not found for architecture x86_64
 clang: error: linker command failed with exit code 1 (use -v to see invocation)
 make: *** [Bosscoin-Qt.app/Contents/MacOS/Bosscoin-Qt] Error 1
 make: Leaving directory `/Users/kriegalex/dev/bosscoin/bosscoin-qt-build-desktop-Qt_4_8_5_in_PATH__System__Release'
 13:30:58: The process "/usr/bin/make" exited with code 2.
 Error while building/deploying project bosscoin-qt (target: Desktop)

我確實嘗試過很多討論Boost和鏈接問題的線程,並且嘗試按照最受歡迎的線程中的建議使用g ++或clang ++進行編譯,但是似乎沒有任何效果。

我真的很感謝您的幫助。 我認為,如果有人已經編譯了Mac OS QT客戶端,應該很清楚出了什么問題。

最好的祝福

所以我找到了解決方案,現在可以使用了,但是我不確定哪個解決了問題:

  • 從Homebrew(通過brew install qt)獲取Qt,而不是從Macports或官方網站獲取

  • 要求Macports安裝帶有+ Universal標簽的boost和其他依賴項

    sudo port install boost +universal

  • 然后我只用了qmake和make進行編譯(如處所述)

我認為這是第二個解決方案,因為它編譯了64位庫。

謝謝bibi向我指出32/64位問題:)

看起來您正在為64位構建,但某些庫為32位,請嘗試在.pro中強制使用

CONFIG+=x86

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM