繁体   English   中英

库已编译为架构x64,但Arm架构出错

[英]Library compiled to architecture x64 with error in Arm architecture

我正在开发一个C++库,该库具有一段返回特定串行端口名称的shell script代码。 当我在控制台中运行X64桌面或Arm环境的脚本时,该脚本将返回正确的答案。 当我在库中执行相同的脚本时,出现了我的问题,返回结果显示格式不正确的字符串,如ÈÛT¶ÈÛT¶¨a? ,但预期为/dev/ttyACM0

在库内部运行的脚本:

脚本

bash -c 'for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev);do(syspath="${sysdevpath%/dev}";devname="$(udevadm info -q name -p $syspath)";[[ "$devname" == "bus/"* ]]&& continue;teste="$(udevadm info -q property --export -p $syspath | grep -i "company_name")";if [[ !  -z "${teste// }" && $devname == *"ttyACM"* ]]; then echo "/dev/$devname";fi);done;' 2> /dev/null

以下代码用于将脚本返回的内容保存到文件中。

代码C ++

pfFile = fopen(CONFIG_FILE, "w+");
fwrite(result,strlen(result), 1, pfFile);
fclose(pfFile);
return 0;

此外,您没有在C ++代码中包括结果以及结果的来源。 您选择了最困难的方法。 在库中运行shell脚本的代码很可能只会引起头痛。

基本上,您可以为设备创建udev规则,以在/ dev中创建唯一且稳定的文件以对其进行访问。 您可以在ArchWiki中创建类似这样的一个

KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="05a9", ATTRS{idProduct}=="4519", SYMLINK+="video-cam1"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM