2016-03-08 82 views
0

我想從源代碼建立RedHawk安裝,並試圖用高版本的uhd替換uhd3.5.3 for USRP_UHD模塊。我看到了USRP_UHD的源代碼,但是找不到uhd3.5.3的源代碼。我猜測它可能只是使用「yum install ...」來下載並安裝uhd主機代碼和支持庫。有人知道這段代碼在redhawk_src_2.0包中的位置嗎?或者有沒有一種有效的方式在Linux中搜索redhawk_src_2.0包中的所有文件?RedHawk從源代碼建立---找到代碼安裝uhd3.5.3

在此先感謝!

回答

2

首先,克隆UHD庫:

git clone git://github.com/EttusResearch/uhd.git 

然後簽出3.9.2標籤:

git checkout release_003_009_002 

運用Ettus(http://files.ettus.com/manual/page_build_guide.html)的說明,安裝在Fedora的部分列出的依賴:

sudo yum -y install boost-devel libusb1-devel python-mako doxygen python-docutils cmake make gcc gcc-c++ 

接下來,用CMake生成Makefiles:

cd <uhd-repo-path>/host 
mkdir build 
cd build 
cmake -DCMAKE_INSTALL_PREFIX=/opt/uhd ../ 

我推薦使用備用在第一次安裝前綴保留3.5.3版本,以防萬一,但如果你不想,只需要運行:

cmake ../ 

代替使用-DCMAKE_INSTALL_PREFIX標誌更長的命令。 (注意:我找不到cmake來查找已安裝的升級版本,因此您可能需要對此進行一些其他研究,因爲它可能是一個完全不同的stackoverflow帖子本身)

現在構建並安裝UHD庫:

make 
make test 
sudo make install 

現在庫安裝,應編輯USRP_UHD/CPP/configure.ac使得PKG_CONFIG_PATH點到安裝的前綴(在國旗上面指定的,或者如果你默認情況下,只需保留它,因爲它應該已經指向/ usr/local/lib/pkgconfig)。同樣在configure.ac文件中,確保將uhd版本號更改爲3.9.2。

現在,你應該能夠重建USRP_UHD設備:

./reconf && ./configure && make install 

我不保證該設備將建立對UHD庫的新版本,將依靠什麼(如果有的話)已被棄用,從支持版本和最新版本之間的庫中刪除。

最後,如果您成功完成了所有這些步驟,並且您指定了非標準安裝前綴,則必須將此前綴添加到LD_LIBRARY_PATH或/etc/ld.so.conf.d/中腳本以便設備正確執行。

+0

這是一個很好的觀點,如果您不想更改uhd版本號,您不需要更改uhd版本號,但它也不會受到傷害,並會傳達給使用更新的設備的用戶使用哪個版本。配置時失敗通常比構建時錯誤更有幫助。至於升級版本號,這取決於。您的RH安裝是否與1.41或1.46/1.48鏈接?如果它與1.41鏈接,則可以嘗試將其重建爲1.46/1.48,或嘗試同時安裝1.41和1.46/1.48,並且有一個RH設備最終與兩個版本鏈接。 – pwolfram

+0

我可能會嘗試重建框架以對抗更新版本的boost,並希望向後兼容性允許您成功構建框架。這樣,您的設備將鏈接到框架,該框架鏈接反對增強1.46/1.48,並與uhd鏈接,鏈接也與1.46/1.48鏈接。替代方案(兩個版本的增強)聽起來不可預測。 – pwolfram

+0

我不確定您是否可以使用RPM來針對指定版本的boost進行重建,因爲它們是二進制RPM,而不是源RPM(這可能不可行,我沒有嘗試過)。如果從系統的角度來看,這將是您的最佳途徑,那麼我會尋找另一個關於重建RPM的SO帖子。否則,我建議根據Telly Too的帖子深入研究RH的源代碼安裝,這並不算太壞。 – pwolfram

0

澄清 - 您可以按照Redhawk手冊附錄B從源代碼安裝UHD v3.9.3後,根據pwolframs說明從源代碼構建Redhawk。 UHD v3.5.3不與Redhawk源代碼一起打包,只有Redhawk RPM,在從源代碼構建UHD和Redhawk時忽略所有這些RPM。