Debian Stretchで実行するために実行可能ファイルをクロスコンパイルしましたが、実行するには特定のバージョンのcURL(7.56以降)が必要で、実行中に特定の機能が必要です。したがって、実行ファイルを実行します。
$ sudo setcap cap_net_raw,cap_net_admin+eip my_executable
このsetcapを実行した後に実行可能ファイルを実行すると、次のエラーが発生します。
curl_easy_perform() failed: Out of memory
ノートこのエラーは、以前のバージョンのCURLのバグが原因で発生すると予想されます。そのため、上記のcURLバージョンにアップグレードする必要があります7.56
。 Raspberry Piで実行している場合、デフォルトバージョンはです7.52
。したがって、システムのcURLバージョンを手動で最新のリリースに更新しましたが、これが以前のバージョンのcURLを指していると思います。
$ curl --version
curl 7.64.1 (armv7l-unknown-linux-gnueabihf) libcurl/7.64.1 OpenSSL/1.1.0j
Release-Date: 2019-03-27
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets
ここで何が起こっているのでしょうか?setcap
実行可能ファイルがusr/bin
標準およびライブラリの外部のどこかで動的にリンクされるようにしますかusr/local/bin
?