[英]Using a C library from a non-C program: is it necessary to explicitely initialize the “under-the-hood” C library?
我知道编译和链接C程序时,您将其链接到
我想知道我是否编写一个程序(使用一种新语言,或者只是使用C而没有链接到此代码)并将其直接链接到C代码共享库(例如zlib或gsl或fftw之类),并省略了C库和C启动代码(假设我的程序将使用其魔力加载外部库本身),这是否“有效”?
我知道CRT启动中有一些初始化代码,所以我想知道如何在不使我的应用程序本身依赖C库的情况下调用所需的函数:因此,加载外部C库将在此时调用必要的初始化代码(如果任何问题,这就是问题所在),否则只需加载OS库/接口即可。
我问的原因是,我想使用一种标准库来编写一种语言,该库可以直接连接到OS API,这与大多数C ++实现不同,后者是基于C库构建的。
我使用了许多其他语言的C共享库。 是否必须显式初始化共享库取决于该库。 通常,它将在加载时隐式初始化,但是某些库需要额外的初始化。 阅读文档。
当然,我程序的代码(C或其他语言)也必须初始化,但这是编译器/链接器通常要注意的事情,即默认情况下链接到启动代码。
在这里看看https://blogs.oracle.com/ksplice/entry/hello_from_a_libc_free
因此,您可以在不依赖任何包含libc的库的情况下启动程序,然后可以根据需要加载和使用库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.