繁体   English   中英

使用非C程序中的C库:是否有必要显式地初始化“底层” C库?

[英]Using a C library from a non-C program: is it necessary to explicitely initialize the “under-the-hood” C library?

我知道编译和链接C程序时,您将其链接到

  1. C库
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM