Hi,
I've been trying to get this "Hello World" to build under the latest stable (1.46.0), and it won't work.
I copied the source from the linked post and get the following error:
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-Wl,--eh-frame-hdr" "-L" "/home/ambiso/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/ambiso/Documents/Projects/echo/target/debug/deps/echo-8931c6e21c0c4d8a.4gijvs203q71b4l8.rcgu.o" "/home/ambiso/Documents/Projects/echo/target/debug/deps/echo-8931c6e21c0c4d8a.r3qi88wqf9d15wl.rcgu.o" "-o" "/home/ambiso/Documents/Projects/echo/target/debug/deps/echo-8931c6e21c0c4d8a" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/home/ambiso/Documents/Projects/echo/target/debug/deps" "-L" "/home/ambiso/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/ambiso/Documents/Projects/echo/target/debug/deps/liblibc-fe6f0c4fc5d79e24.rlib" "/home/ambiso/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-cbfb51de52131460.rlib" "/home/ambiso/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-97497c26fddb7882.rlib" "/home/ambiso/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-f1a9d8c443e20b5e.rlib" "-Wl,-Bdynamic" "-lutil" "-ldl" "-lutil"
= note: /usr/bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib/Scrt1.o: in function `_start':
(.text+0x16): undefined reference to `__libc_csu_fini'
/usr/bin/ld: (.text+0x1d): undefined reference to `__libc_csu_init'
/usr/bin/ld: (.text+0x2a): undefined reference to `__libc_start_main'
/usr/bin/ld: /home/ambiso/Documents/Projects/echo/target/debug/deps/echo-8931c6e21c0c4d8a.4gijvs203q71b4l8.rcgu.o: in function `main':
/home/ambiso/Documents/Projects/echo/src/main.rs:11: undefined reference to `printf'
collect2: error: ld returned 1 exit status
error: aborting due to previous error
Here's the main.rs
I'm using:
#![no_std]
#![no_main]
extern crate libc;
#[no_mangle]
pub extern "C" fn main(_argc: isize, _argv: *const *const u8) -> isize {
// Since we are passing a C string the final null character is mandatory
const HELLO: &'static str = "Hello, world!\n\0";
unsafe {
libc::printf(HELLO.as_ptr() as *const _);
}
0
}
#[panic_handler]
fn my_panic(_info: &core::panic::PanicInfo) -> ! {
loop {}
}
Here is my Cargo.toml
:
[package]
name = "echo"
version = "0.1.0"
authors = ["ambiso <ambiso@invalid>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
libc = { version = "*", features = [] }
[profile.dev]
panic = 'abort'
[profile.release]
# opt-level = 'z' # Optimize for size.
# lto = true
# codegen-units = 1
panic = 'abort'
I've found this related issue but I couldn't make it work.
Thanks for any help!