VirusTotal / yara-x

A rewrite of YARA in Rust.
https://virustotal.github.io/yara-x/
BSD 3-Clause "New" or "Revised" License
565 stars 46 forks source link

problem to build with amd64 #145

Open geraldstanje opened 1 week ago

geraldstanje commented 1 week ago

hi,

i tried to build the lib for amd64 - but got the following error. any idea how to fix it?

docker file:

FROM golang:latest AS builder

RUN apt-get update && apt-get install -y ca-certificates
RUN apt-get install -y xz-utils libssl-dev gcc-x86-64-linux-gnu

WORKDIR /home/contrib

COPY . . 

RUN wget -c https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz
RUN xz -d -v zig-linux-x86_64-0.13.0.tar.xz
RUN tar -xvf zig-linux-x86_64-0.13.0.tar
ENV PATH="/home/contrib/zig-linux-x86_64-0.13.0:$PATH"

ENV PATH="/root/.cargo/bin:$PATH"
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh -s -- --default-toolchain=1.79.0 -y

RUN cargo install cargo-c
RUN git clone https://github.com/VirusTotal/yara-x
RUN rustup target add x86_64-unknown-linux-gnu
RUN cd yara-x && cargo cinstall -p yara-x-capi --target x86_64-unknown-linux-gnu

error:

cargo cinstall -p yara-x-capi --target x86_64-unknown-linux-gnu
   Compiling zstd-sys v2.0.11+zstd.1.5.6
   Compiling num-conv v0.1.0
   Compiling rand_chacha v0.3.1
   Compiling elliptic-curve v0.13.8
   Compiling wasmtime-environ v19.0.2
   Compiling rusticata-macros v4.1.0
   Compiling crossbeam-epoch v0.9.18
   Compiling rfc6979 v0.4.0
   Compiling serde_spanned v0.6.6
   Compiling toml_datetime v0.6.6
   Compiling ittapi-sys v0.4.0
   Compiling winnow v0.6.13
   Compiling time v0.3.36
   Compiling rayon-core v1.12.1
   Compiling num-bigint-dig v0.8.4
   Compiling indexmap v1.9.3
   Compiling memoffset v0.9.1
   Compiling wasmtime-fiber v19.0.2
   Compiling cranelift-native v0.106.2
   Compiling cranelift-frontend v0.106.2
   Compiling crossbeam-deque v0.8.5
   Compiling rand v0.8.5
   Compiling itertools v0.12.1
   Compiling num-iter v0.1.45
   Compiling serde_json v1.0.117
   Compiling uuid v1.8.0
   Compiling dirs-sys-next v0.1.2
   Compiling wasmtime-asm-macros v19.0.2
   Compiling ryu v1.0.18
   Compiling hashbrown v0.12.3
   Compiling oid-registry v0.7.0
   Compiling wasmtime-cache v19.0.2
   Compiling radium v0.7.0
   Compiling debugid v0.8.0
   Compiling directories-next v2.0.0
   Compiling wasmtime-runtime v19.0.2
   Compiling primeorder v0.13.6
   Compiling asn1-rs v0.6.1
   Compiling ecdsa v0.16.9
   Compiling wast v201.0.0
   Compiling toml_edit v0.22.14
   Compiling cranelift-wasm v0.106.2
   Compiling regex v1.10.5
   Compiling fxhash v0.2.1
   Compiling wasmtime-jit-debug v19.0.2
   Compiling num-bigint v0.4.5
   Compiling memfd v0.6.4
   Compiling encoding_rs v0.8.34
   Compiling wasmtime-cranelift-shared v19.0.2
   Compiling toml v0.8.14
   Compiling sptr v0.3.2
   Compiling base64 v0.21.7
   Compiling wasmtime-wmemcheck v19.0.2
   Compiling tap v1.0.1
   Compiling fallible-iterator v0.2.0
   Compiling anstyle v1.0.7
   Compiling ucd-trie v0.1.6
   Compiling stable_deref_trait v1.2.0
   Compiling memx v0.1.32
   Compiling annotate-snippets v0.11.4
   Compiling gimli v0.26.2
   Compiling pest v2.7.10
   Compiling wyz v0.5.1
   Compiling wat v1.201.0
   Compiling wasmtime-cranelift v19.0.2
   Compiling der-parser v9.0.0
   Compiling parse-display v0.8.2
   Compiling fxprof-processed-profile v0.6.0
   Compiling rayon v1.10.0
   Compiling ittapi v0.4.0
   Compiling bstr v1.9.1
   Compiling itertools v0.13.0
   Compiling pkcs1 v0.7.5
   Compiling memmapix v0.7.6
   Compiling fs4 v0.6.6
   Compiling wasm-encoder v0.29.0
   Compiling protobuf v3.4.0
   Compiling addr2line v0.21.0
   Compiling protobuf-support v3.4.0
   Compiling wasmtime-jit-icache-coherence v19.0.2
   Compiling bitmask v0.5.0
   Compiling yansi v1.0.1
   Compiling wasmparser v0.80.2
   Compiling wasmtime-slab v19.0.2
   Compiling bytes v1.6.0
   Compiling funty v2.0.0
   Compiling data-encoding v2.6.0
   Compiling id-arena v2.2.1
   Compiling base64 v0.22.1
   Compiling x509-parser v0.16.0
   Compiling walrus v0.20.3
   Compiling bitvec v1.0.1
   Compiling yara-x-parser v0.4.0 (/home/contrib/yara-x/parser)
   Compiling fmmap v0.3.3
   Compiling linkme v0.3.27
   Compiling rsa v0.9.6
   Compiling yara-x v0.4.0 (/home/contrib/yara-x/lib)
   Compiling p384 v0.13.0
   Compiling p256 v0.13.2
   Compiling dsa v0.6.3
   Compiling sha1 v0.10.6
   Compiling md2 v0.10.2
   Compiling md-5 v0.10.6
   Compiling intaglio v1.9.1
   Compiling tlsh-fixed v0.1.1
   Compiling rustc-hash v2.0.0
   Compiling ascii_tree v0.1.1
   Compiling roxmltree v0.20.0
   Compiling array-bytes v6.2.3
   Compiling yara-x-capi v0.4.0 (/home/contrib/yara-x/capi)
   Compiling zstd-safe v7.1.0
   Compiling zstd v0.13.1
   Compiling wasmtime v19.0.2
warning: fields `version` and `signature_algorithm` are never read
   --> lib/src/modules/pe/asn1.rs:281:9
    |
280 | pub struct SignerInfo<'a> {
    |            ---------- fields in this struct
281 |     pub version: i32,
    |         ^^^^^^^
...
304 |     pub signature_algorithm: AlgorithmIdentifier<'a>,
    |         ^^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` on by default

warning: `yara-x` (lib) generated 1 warning
error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/bin:/home/contrib/zig-linux-x86_64-0.13.0:/root/.cargo/bin:/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "-Wl,--version-script=/tmp/rustcvxiL3b/list" "-Wl,--no-undefined-version" "-m64" "/tmp/rustcvxiL3b/symbols.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.00.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.01.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.02.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.03.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.04.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.05.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.06.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.07.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.08.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.09.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.10.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.11.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.12.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.13.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.14.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.yara_x_capi.1dea951d210a4b0a-cgu.15.rcgu.o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/yara_x_capi.34agc9tftdrh40dq.rcgu.o" "-Wl,--as-needed" "-L" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps" "-L" "/home/contrib/yara-x/target/release/deps" "-L" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/build/ittapi-sys-46e447b5aea89f16/out" "-L" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/build/zstd-sys-42a274da8454fcb2/out" "-L" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/build/wasmtime-runtime-c5faba412c27b961/out" "-L" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libyara_x-e84e76f2e421e3f8.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libp384-a52c0fef7e4c6adc.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libp256-0af278016a9a5ff2.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libprimeorder-489f2add7d1c4991.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libroxmltree-4291bb457707568e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtlsh_fixed-ea350cd99036aabd.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librsa-cd4e65714a81eb63.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libpkcs1-acf0e0dcb44fe1c7.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libmd2-93929a9df858777a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libecdsa-153bd31355ec297f.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libelliptic_curve-98837cd0202ea8ca.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsec1-f17b1db04029c27c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libhkdf-1528766941db1f04.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcrypto_bigint-9e261ef4afa6a1e3.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbase16ct-f05f8409b7bd99c2.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libgroup-7966a8e657247516.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libff-a877363271043235.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libdsa-51ffac12ed5de48e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librfc6979-77266b96f585518a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libhmac-c7b26e952d80394d.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsignature-a4f71f4752fdd5df.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libpkcs8-bfb0ec1fc5610cf3.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libspki-230bba8b208d8cb5.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libder-744ef3d153259a0f.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libpem_rfc7468-4cc332cee8d833db.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbase64ct-f9a941e52cd6cdf3.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libnum_bigint_dig-eb20bde34db1952b.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/liblibm-233784152e8aacb6.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libnum_iter-4ce08510bf2fc804.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librand-6182abbc8e8f9bf7.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librand_chacha-2e7beb8623edf993.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libppv_lite86-6101f8e785029858.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librand_core-3bf9b36afa42d619.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libx509_parser-1ec63238f9b313a9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libdata_encoding-c82610188dd449bc.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/liboid_registry-ecd0941c3d0503a3.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libder_parser-ede1b6173241153d.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libnum_bigint-afcdc74f79ca476e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libnum_integer-69579ea38fde8d83.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libasn1_rs-643f26843f281c94.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librusticata_macros-b1342638f79da19f.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtime-366f950a7a2e3850.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtime_core-94c61b830e43064d.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libnum_conv-7254be64e6a6c965.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libderanged-1dc6832d892c29eb.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libpowerfmt-35920787668e41f9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libarray_bytes-259f7619d6c2cd9a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsha1-763443cf35709051.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libmd5-c77136bda5a33b52.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libnom-a6c170f37d26f91a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libintaglio-20a679135c30c5ea.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libfmmap-2ed64770b6e7c018.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbytes-e286c99af66ce48a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libmemmapix-9d326daf62211cc8.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libfs4-c017d35718eebffd.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libparse_display-7cfba69323ead120.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libregex-2ed1557b9171267e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libmemx-8e03b6588007efde.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime-10cf1cde0e8b1fde.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_cranelift-acfa26c7b0391b0e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_cranelift_shared-f871e851936c0bf9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_native-c86ec2a9aa712d4e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_wasm-52457f7cab1e0731.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libitertools-713eba88d91cab9e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_frontend-4a957fb988fa27a9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_codegen-3aee7f3a6d15293f.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_codegen_shared-6a2140b994d475ed.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libregalloc2-e0ea7501a9088342.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libslice_group_by-898b31b3ca49de6e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libhashbrown-da1a5567134ceab1.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librustc_hash-16054f3a228ffb00.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_control-425338d9139aa7d1.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libarbitrary-886b9085c1c57dd9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_bforest-659b32a1158fbb42.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwat-2be2ab6a191de805.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwast-c47fe0e4810616d7.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbumpalo-1917a3e066d1d36e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libaddr2line-82e339256b9fc61d.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libittapi-1924c68e7429bcb5.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libittapi_sys-49a65c2fe0028b1c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librayon-ab77ac0929df4f4c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librayon_core-1a366a771a26bdbe.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcrossbeam_deque-94add37fb10a1015.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcrossbeam_epoch-5eaa0fc7214f34be.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcrossbeam_utils-80ab8471e0d22df0.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_cache-6afa23d7f634246c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtoml-3faa1c33c156e44b.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtoml_edit-5d0f8b8cb7598ce8.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libserde_spanned-06e9f4293b4098f4.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwinnow-2e364d4837e6f340.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtoml_datetime-9ace32f218cf1768.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libzstd-e5e56c1e1095d4d6.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libzstd_safe-70330b6478d361d7.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libzstd_sys-ab8e70b98323a3f2.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libdirectories_next-b6bedecb2e0ec9dd.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libdirs_sys_next-18c2e1fad9ad1b6e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsha2-723eac90856ae0a2.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcpufeatures-3751d93562c0bb6b.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libdigest-8db2bf5ffe3833e6.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsubtle-b377824ad44a6bd0.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libconst_oid-ffb422831552afe7.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libblock_buffer-ae8732efc5643add.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcrypto_common-be635ec0f1cfeab1.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libgeneric_array-030afaa6329b87ad.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtypenum-dbdda252273d2861.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libzeroize-6713565cc4a20d78.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbase64-f25f04705a161be7.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_slab-c9211d218e302c28.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libfxprof_processed_profile-573353192b7ffd97.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libserde_json-84389e5bc57e7191.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libitoa-1662ba5c5740deb9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libryu-f648466bb35e5794.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libfxhash-e5980a70c0e97dd5.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbyteorder-f290c8f87a9c68ed.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libdebugid-08f7cc6e69cd22ba.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libuuid-bbbfede1345269f6.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libgetrandom-58583d5776f33603.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_jit_icache_coherence-09fdc4225c10840c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_runtime-10ab3f8449835888.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libmemfd-0ddfe3ef4b4a066d.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/liblibc-750fe8979a66d3cf.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libencoding_rs-46eb89cf831168f6.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_jit_debug-a971a0b5f662ef2b.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_fiber-9ec2bbe2c7bf5821.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librustix-a20a6310227c8833.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/liblinux_raw_sys-3244c04da6cc96a8.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_asm_macros-3f380d3718fe0738.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsptr-cf646e5e2433d2fc.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libmemoffset-768cf7617b874d6d.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_environ-c16a457f1d353be8.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmprinter-e9e23822de6c47c4.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcpp_demangle-8972c25587d83eb2.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librustc_demangle-d073106afe23a44b.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libgimli-8c0579fc60e41a75.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasm_encoder-315bf3d55c7d73a5.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_component_util-420b654c1a213a79.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmtime_types-9ccf25f81020e309.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmparser-1a63d70f53bef5f4.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbitflags-2a70d50b5e587fa2.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsemver-97b88972a1f4b8c5.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcranelift_entity-8d4fe17464d807c0.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtarget_lexicon-7c0996bd49db5f83.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libobject-7bf9416dfc089efb.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libindexmap-2eac5b5e2a37154c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libequivalent-88860c346a3620ef.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libhashbrown-335fed005ba69aa0.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libahash-e60bd62aa96b4298.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libzerocopy-4dc317d6bd59f462.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcrc32fast-20a7684ec231c24c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libcfg_if-48ea18c06ed0005a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/liblinkme-3e4b7f6520e172b4.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libprotobuf-89c12c6744a9c55f.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libprotobuf_support-4c56cda75f102f2f.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libonce_cell-c09398dcae23840a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libsmallvec-f1cd7b1bbc337f8c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbitvec-acc7f4e0dab89367.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwyz-7dc9fd83056a84e5.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libtap-c378fa822455c38b.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libradium-ac38600ed20202e0.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libfunty-e60429f347c1ebf1.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libyara_x_parser-668f80c4b706f8c3.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbase64-7e2abfc5e416d0b9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libyansi-444728a0dc80a22c.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libannotate_snippets-0d76219d08b4bffd.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libunicode_width-a3298df6754480c5.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libanstyle-9815f854c7f75740.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libnum_traits-7297be2c8a232529.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/liblazy_static-cd9097ddc88f9da7.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libspin-6fbaef7b771622c9.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libpest-e4a9f9d4f0d34ccb.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libucd_trie-fbd26ac212e4437e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libthiserror-fa1bf0f867870c96.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwalrus-f3661a3ad1a7c594.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasm_encoder-a9cfa0a148aef23e.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libleb128-583307a06ccbffba.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libgimli-f7d0950abd240fbf.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libfallible_iterator-f8bfe0be651f08fa.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libindexmap-c60e994e3f2ebc38.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libhashbrown-a688c864bb248379.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libstable_deref_trait-8c1a1b3655459720.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libwasmparser-04d09640bc0f1b3b.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libanyhow-46ff3b94139d2752.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libid_arena-e241fb9403609066.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/librustc_hash-cab26d6e9b2ceafc.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libitertools-567b9d3c60a16732.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libeither-16ced89a63af3e94.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbstr-b1fcc0e4abd294ce.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libregex_automata-6395e5adb8012167.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libaho_corasick-9e0a6c31a09f9781.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/liblog-3df39c7edfea871a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libregex_syntax-f1c232d0906c2cc6.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libmemchr-8acdb4898d9d6c9a.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbitmask-b021c52ee7b38372.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libbincode-3011108636d70f87.rlib" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libserde-89018daf631a47b9.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-d5189b81a4fa4d36.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-6a4779412a873200.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-c88c426dd6780435.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-e74540b31113a555.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-8751b61bd13c15cf.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-a8b99dba9f449259.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-f0068d76172a0372.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-c16dfaf47799564e.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-bfa26dd63e299db5.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-75a2330a693e738f.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-76779dce1f7ab63d.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-01c5cc588623cb35.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-07bb9745ec737292.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-6eacdcc91004cefb.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-ae2488b58226c836.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-52acaddcaaba04c6.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-326b78eac9ecd050.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-307ebf19f0f13d30.rlib" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-d9076ee5964191bf.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/root/.rustup/toolchains/1.79.0-aarch64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/contrib/yara-x/target/x86_64-unknown-linux-gnu/release/deps/libyara_x_capi.so" "-Wl,--gc-sections" "-shared" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-Wl,--strip-debug" "-nodefaultlibs" "-Wl,-soname,libyara_x_capi.so.0.4"
  = note: cc: error: unrecognized command-line option '-m64'

error: could not compile `yara-x-capi` (lib) due to 1 previous error
Error: CliError { error: Some(1 job failed), exit_code: 101 }
plusvic commented 1 week ago

That looks like an issue with the Rust toolchain itself. The problem here is that the compiler is running in the aarch64 platform, but you are explicitly telling the compiler to build the binary for x86_64-unknown-linux-gnu. So, the compiler is trying to cross-compile the program for x86_64 by using the -m64 option, which is not supported by your compiler.

geraldstanje commented 1 week ago

hi @plusvic i have a macbook pro m1 with osx, run the dockerfile above to compile for linux amd64 (AMD64 = x86-64). did i install the wrong compiler?

geraldstanje commented 1 week ago

hi,

i got it to work:

Dockerfile:

FROM golang:latest AS builder

RUN apt-get update && apt-get install -y ca-certificates
RUN apt-get install -y xz-utils libssl-dev

WORKDIR /home/contrib
COPY . .

ENV PATH="/root/.cargo/bin:$PATH"
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain=1.79.0 -y --verbose 

RUN cargo install cargo-c
RUN git clone https://github.com/VirusTotal/yara-x
RUN rustup target add x86_64-unknown-linux-gnu
RUN cd yara-x && cargo cinstall -p yara-x-capi --target x86_64-unknown-linux-gnu
RUN GOOS=linux CGO_ENABLED=1 GOARCH=amd64 CGO_CFLAGS="$(pkg-config --cflags yara_x_capi)" CGO_LDFLAGS="-Wl,-rpath,/usr/local/lib $(pkg-config --libs yara_x_capi)" go build -o contrib -v .

FROM ubuntu:latest

COPY --from=builder /usr/local/lib/libyara_x_capi.so.0.4 /usr/local/lib/libyara_x_capi.so.0.4
COPY --from=builder /home/contrib/contrib /home/contrib/contrib
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

ENTRYPOINT ["/home/contrib/contrib"]

main.go:

package main

import (
  "fmt"
  "time"

  yarax "github.com/VirusTotal/yara-x/go"
)

func main() {
  // Compile some YARA rules.
  rules, _ := yarax.Compile(`
  rule foo {
    strings:
      $foo = "foo"
    condition:
      $foo
  }

  rule bar {
    strings:
      $bar = "bar"
    condition:
      $bar
  }`)

  // Use the compiled rules for scanning some data.
  matchingRules, _ := rules.Scan([]byte("foobar"))

  // Iterate over the matching rules.
  for _, r := range matchingRules {
    fmt.Printf("rule %s matched\n", r.Identifier())
  }

  time.Sleep(1000 * time.Second)
}

build.sh:

app_name="yara_test:v1"
docker build -t ${app_name} . --platform linux/amd64

output when executing the golang binary:

rule foo matched
rule bar matched

i run into a segfault with rustup - so i had to disable rosetta in the docker desktop (docker desktop 4.28.0 on my macbook pro m1): infos are here: https://github.com/rust-lang/rustup/issues/3902 and https://github.com/rust-lang/rust/issues/125430

could be helpful to add this into the docs...

how can i static link the lib libyara_x_capi to the golang app? also is there a way to use CGO_ENABLED=0 for that?

cc @plusvic @steffenfritz

plusvic commented 6 days ago

For static link, did you tried go build -tags static_link?

https://github.com/VirusTotal/yara-x/blob/c45c8c7ad3c78174f981b6c74a5a3620c65b03d9/go/main.go#L4-L6

When you use the static_link build tag, CGO passes the --static argument to pkg-config, which means that your program will be linked with a static version of the library.

Regarding to CGO_ENABLED, it must be CGO_ENABLED=1, you can't disable CGO when you are building a Go module like this, that uses C code for interfacing with a C library.