11-04-2021 09:32 PM
現在、Windows版LabVIEWを用いてsbRIO-9608の開発作業を行っています。
sbRIOはLinux環境で動作しますが、RTターゲットとして接続しデプロイすることでWindows版LabVIEWで開発したVIも動かせるということでこの方法を採っています。
ですが、現在Linux上にあるSOファイルをライブラリ関数呼び出しノードで関数をコールができない状況です。パス指定ではsbRIO上でのSOのパスを指定していて、エラーも出ていませんが関数は呼び出されていないです。同じディレクトリ上にVIとSOファイルがいないといけないのではないかと思い、sbRIO上でVIが保存されている場所を探そうとしましたが見つからず、デプロイされたらどこに実行ファイルが作成されるのかがわかりません。
この状況はパス指定が不適切なのが原因でしょうか?
解決済! 解決策の投稿を見る。
11-11-2021 11:54 PM
.soファイルは何で開発されたのでしょうか?
NIから提供されているC/C++Toolchainなどをお使いでしょうか?
そうであれば、Windows版でsbRIO-9608ということは、以下のURLの
Building C/C++ Applications for NI Linux Real-Time - NI
https://www.ni.com/ja-jp/innovations/white-papers/20/building-c-c---applications-for-ni-linux-real-t...
に記載のある「GNU C and C++ Compiler for x64 Linux (Windows host) 2017-2018」を使われたということでしょうか?
sbRIOに、リアルタイムアプリケーションをビルドデプロイした場合、
実行ファイルがstartup.rtexeというファイル名で、"/c/ni-rt/startup/”に保存されていると思います。
.soファイルは、恐らくですが、/usr/local/lib/ あたりに保存した後、sudo ldconfigコマンドを実行する必要があるかと思います。
$ sudo ldconfig
このあたりは、Linuxでの.so開発についての話になりますのでネットで検索してみてください。
11-12-2021 12:13 AM
alcky4416様
soファイルはGCCで開発しました。
RTアプリケーションのビルド方法、ファイル名につきましてもご教示ありがとうございます。
呼び出せない原因は特定済みで解決していましたが、
こちらでは解決済みにしていませんでした。
申し訳ございません。
原因と解決方法について以下に記します。
デバイスファイルのアクセス権限を与えていなかったことが原因だったようで
ルールファイルを追加し、アクセス権限を設定することでsoが呼び出せました。
参照URL:https://qiita.com/hana_shin/items/16c457eed20e8822cab8#1-udev%E3%81%A8%E3%81%AF