Skip to content

Unable to build flint_sys with cargo build(?) #525

@gerblesh

Description

@gerblesh

Describe the bug
Hi! Thanks for making this crate! I'm running into some build issues when running the standard cargo build presumably being something to do with flint_sys. I have added it as a dependency as I needed some of the niche factoring features, but I have tried building with and without flint_sys as a direct dependency and it seems to still have trouble.

To Reproduce

use qfall_math::integer::Z;

fn main() {
    let my_int = Z::from(20);
    println!("{:?}", my_int + Z::from(50));
}

Expected behavior
The crate builds and the program can run

Screenshots

Desktop (please complete the following information):

  • OS: Fedora Silverblue
  • Version of qFALL-math: 0.1.0

Additional context
build logs:

error: linking with `cc` failed: exit status: 1
                                        |
  = note:  "cc" "-m64" "/tmp/rustcVmuUbt/symbols.o" "<6 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "/home/user/Documents/Rust/qfall-test/target/debug/deps/{libqfall_math-158a29ecd42e90b7.rlib,librand_distr-ef1d79c8d18a231e.rlib,libnum_traits-d310152ca9e14d1b.rlib,libregex-d9d93d515fccce4a.rlib,libregex_automata-4b9c47d57f4f27cd.rlib,libaho_corasick-34ce0f37332b0ceb.rlib,libmemchr-3dd7c4eee1e54167.rlib,libregex_syntax-f0b266d216f98324.rlib,libstring_builder-64b54de7182e57f4.rlib,librand-a4b9e5a925b97bd9.rlib,librand_chacha-a3fdeb35b99edb2b.rlib,libppv_lite86-2272e97e649624c5.rlib,libzerocopy-89781b5267f25207.rlib,librand_core-f2b8b8f0bf094130.rlib,libgetrandom-05950de74433556d.rlib,libcfg_if-2262c59ed30cbfdf.rlib,libprobability-16ea7b2314483598.rlib,libspecial-42e511413c5f1f79.rlib,liblibm-062b0ffaab479e1d.rlib,librandom-6c34c7ec4d8f1c97.rlib,libderive_more-746200ced5662dd5.rlib,libserde-e0d783b46e19e3fc.rlib,libserde_core-dbf7f665be55c806.rlib,libflint_sys-6c439946d8f6a18d.rlib,liblibc-47d1a20e671dfc01.rlib,libthiserror-9192dc0b60f15726.rlib}.rlib" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,libcfg_if-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/tmp/rustcVmuUbt/raw-dylibs" "-B<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,-znostart-stop-gc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/home/user/Documents/Rust/qfall-test/target/debug/build/alloca-40a57f704287e095/out" "-L" "/home/user/Documents/Rust/qfall-test/target/debug/build/flint-sys-f92676efbc0947e7/out/lib" "-L" "/home/user/Documents/Rust/qfall-test/target/debug/build/gmp-mpfr-sys-13218d66869abd60/out/lib" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/user/Documents/Rust/qfall-test/target/debug/deps/qfall_test-974396eae144f87a" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
  = note: some arguments are omitted. use `--verbose` to show all linker arguments     = note: rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)                                                     >>> referenced by exception.c:55 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:55)                        >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib                          
          rust-lld: error: relocation R_X86_64_32S cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)                                                     >>> referenced by exception.c:57 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:57)                        >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib                          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(memory_manager.o)                                                >>> referenced by memory_manager.c:51 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/memory_manager.c:51)              >>>               memory_manager.o:(flint_memory_error) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib                                                                                                   rust-lld: error: relocation R_X86_64_32 cannot be used against symbol 'global_thread_pool'; recompile with -fPIC                                                          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(thread_pool_init.o)
          >>> referenced by memory_manager.c:233 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/memory_manager.c:233)            >>>               memory_manager.o:(flint_cleanup_master) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib            
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c:72 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:72)                        >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib                          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c:78 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:78)
          >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c:60 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:60)
          >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c:63 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:63)
          >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(printf.o)
          >>> referenced by printf.c:77 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/printf.c:77)
          >>>               printf.o:(flint_vprintf) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(fmpz_divexact_ui.o)
          >>> referenced by divexact_ui.c:26 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/fmpz/divexact_ui.c:26)
          >>>               fmpz_divexact_ui.o:(fmpz_divexact_ui) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c:66 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:66)
          >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c:69 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:69)
          >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(printf.o)
          >>> referenced by printf.c:80 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/printf.c:80)
          >>>               printf.o:(flint_vprintf) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c:75 (/var/home/user/Documents/Rust/index-calc/target/debug/build/flint-sys-f92676efbc0947e7/out/build/exception.c:75)
          >>>               exception.o:(flint_throw) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c
          >>>               exception.o:(.rodata+0x0) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c
          >>>               exception.o:(.rodata+0x8) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c
          >>>               exception.o:(.rodata+0x10) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c
          >>>               exception.o:(.rodata+0x18) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c
          >>>               exception.o:(.rodata+0x20) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
          >>> defined in /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib(exception.o)
          >>> referenced by exception.c
          >>>               exception.o:(.rodata+0x28) in archive /home/user/Documents/Rust/qfall-test/target/debug/deps/libflint_sys-6c439946d8f6a18d.rlib
          
          rust-lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
          collect2: error: ld returned 1 exit status
          

error: could not compile `qfall-test` (bin "qfall-test") due to 1 previous error

Solution
Possibly updating the flint_sys crate to be compiled with -fPIC but the suggestion could very well also be a red herring. Open to suggestions here as this could also just be an issue with my local system and not the library itself

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions