У меня есть библиотека C, которую я обертываю в ящик Rust, используя bindgen
. Мой build.rs
прост и очень похож на этот . Библиотека C использует внутренне pthreads
.
В принципе, моя кросс-компиляция работает для чистых целей Rust, но в сочетании с библиотекой bindgen
C перестает работать. Компиляция для моей хост-платформы (x86_64
) работает нормально, но при попытке кросс-компиляции для arm-unknown-linux-gnueabihf
(Raspberry Pi Zero) * я получаю следующие ошибки:
/home/andreas/rpi/rootfs/usr/include/stdint.h:43:9: error: unknown type name '__int_least8_t'
/home/andreas/rpi/rootfs/usr/include/stdint.h:44:9: error: unknown type name '__int_least16_t'
/home/andreas/rpi/rootfs/usr/include/stdint.h:45:9: error: unknown type name '__int_least32_t'
/home/andreas/rpi/rootfs/usr/include/stdint.h:46:9: error: unknown type name '__int_least64_t'
/home/andreas/rpi/rootfs/usr/include/stdint.h:49:9: error: unknown type name '__uint_least8_t'
/home/andreas/rpi/rootfs/usr/include/stdint.h:50:9: error: unknown type name '__uint_least16_t'
/home/andreas/rpi/rootfs/usr/include/stdint.h:51:9: error: unknown type name '__uint_least32_t'
/home/andreas/rpi/rootfs/usr/include/stdint.h:52:9: error: unknown type name '__uint_least64_t'
/home/andreas/rpi/rootfs/usr/include/stdio.h:39:10: fatal error: 'bits/types/__fpos_t.h' file not found
/home/andreas/rpi/rootfs/usr/include/stdint.h:43:9: error: unknown type name '__int_least8_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdint.h:44:9: error: unknown type name '__int_least16_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdint.h:45:9: error: unknown type name '__int_least32_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdint.h:46:9: error: unknown type name '__int_least64_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdint.h:49:9: error: unknown type name '__uint_least8_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdint.h:50:9: error: unknown type name '__uint_least16_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdint.h:51:9: error: unknown type name '__uint_least32_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdint.h:52:9: error: unknown type name '__uint_least64_t', err: true
/home/andreas/rpi/rootfs/usr/include/stdio.h:39:10: fatal error: 'bits/types/__fpos_t.h' file not found, err: true
thread 'main' panicked at 'Unable to generate bindings: ()', src/libcore/result.rs:1188:5
Я использовал его со встроенными инструментами Rust и с обычным набором инструментов clang
+ gcc
в моей системе и прекрасно компилируется изначально. Теперь я переключился на raspi-toolchain и установил CPATH
для заголовочных файлов, которые я скачал с моего Raspberry Pi Zero, но проблема сохраняется (она меняется только с ошибок на основе pthread.h
до stdint.h
).
В build.rs
я сначала запускаю cmake
, а затем делаю следующее:
let dst = cmake::Config::new("../")
//...
.build();
println!("cargo:rustc-link-search=native={}", dst.display());
Как я могу продолжить?
то же самое происходит с целью armv7.