Tag: static libraries

我有两个非常相似的C函数从python和Java调用。 如何将2个库合并为1个可以从两种语言调用的库?

基本上我有2个C函数“encrypt”的实现,我使用ctypes和java使用JNI从python调用。 我被告知要使用两个用于java和python的动态库,并将它们组合成一个可以从两者中调用的静态库。 为了澄清,这里是使用JNI的Java的C函数实现: #include “jniTest.h” #include JNIEXPORT void JNICALL Java_jniTest_passBytes (JNIEnv *env, jclass cls, jbyteArray array) { unsigned char *buffer = (*env)->GetByteArrayElements(env, array, NULL); jsize size = (*env)->GetArrayLength(env,array); for(int i=0; iReleaseByteArrayElements(env, array, buffer, 0); } 因此,该函数接受一个字节数组,并将每个字节递增1,然后返回新字节数组的每个元素。 这是java方面: class jniTest{ public static native void passBytes(byte[] bytes); static{ System.loadLibrary(“encrypter”); { public static void main(String[] args){ Tester tester […]

Fedora动态替换libm.a(静态lib)?

我只想弄清楚,为什么Fedora没有静态库libm.a ,如果它是一个事实, 我应该使用它 ? 正如StackOverflow中所提到的,我可以简单地从yum安装pkg ,但可以认为Fedora有替换默认的lib而不是。不是吗? 编辑 我正在尝试编译这个: #include #include void fred(int arg) { printf(“fred: you passed %d\n”, arg); } 输出是这样的: $ gcc -o fred fred.c /usr/lib64/libm.so /usr/lib/gcc/x86_64-redhat-linux/6.2.1/../../../../lib64/crt1.o: En la función `_start’: (.text+0x20): referencia a `main’ sin definir collect2: error: ld devolvió el estado de salida 1 用lm和/usr/lib/libm.a和/usr/lib64/libm.a测试ggc 我已完成所有mencioned在这里和其他post, yum install glibc-static并检查/usr/lib64/libm.so 编辑 repoquery –whatprovides […]

Buildroot:只构建一个包作为共享和静态库,所有其他包只共享

buildroot提供了构建的可能性 只有静态, 只有共享, 或者共享和静态库 所选包裹 分配的配置元素是BR2_STATIC_LIBS , BR2_STATIC_LIBS和BR2_SHARED_STATIC_LIBS 。 题: 是否可以仅为一个包构建共享和静态库,同时仅为所有其他包构建共享库? 我想要一个静态库的一个项目是一个基于autotools的包。 我的努力: 我确实阅读了手册,但无济于事。 我确实提出了一个想法,但我认为它不起作用:我可以使用buildroot调用configure脚本,并使用我定义的一些参数强制另外创建一个静态库。 但是,这会与buildroot提供的参数冲突,这会强制configure完全相反。 (仅创建共享库。) 谢谢! 不幸的是我甚至无法分辨出我正在使用哪个版本的buildroot,因为我没有找到获得buildroots版本号的方法。

对我自己的库的未定义引用

我用几个创建了我的lib.a文件 gcc -c file.c -o file.o 然后 ar sr lib/libtest.a file1.o file2.o file3.o 确认 ar -t lib/libtest.a file1.o file2.o file3.o 但是当我尝试编译测试应用程序时 gcc lib/libtest.a test.c -o test 我在函数main得到了未定义的引用:来自file1.o,file2.o,file3.o的函数

静态和动态地链接同一个库

我有一个静态链接到库( libA.2.0.a )的程序,并且还动态链接到另一个库( libB.so )。 libB.so还动态链接到旧版本的libA( libA.1.0.so )。 这种配置是否可行? 如果是这样,系统如何知道使用libA.2.0.a的符号表示我的程序, libA.1.0.so的符号表示libB.so ?

链接Xcode 7中的静态C库?

我目前正在尝试将我创建的静态C库链接到一个新的Xcode项目。 要链接它,我按照以下说明操作: 1)导航到Build Phases 2) 使用库展开链接二进制文件 3)添加了“其他”库,然后指定了相关的.a文件。 不幸的是,该项目不会编译并抛出以下错误: ld: library not found for -ltxht 我不确定该怎么做。 该库似乎在项目中作为项目文件显得正常,我找不到任何迹象表明存在任何问题。 我已经尝试在文件检查器中设置它的位置以使用绝对路径 ,但这并没有改变任何东西。 我也看到在一些类似的在线post中,以某种方式提供静态库的完整路径可能有助于解决问题: 回应你对Eduard Wirch回答的评论:如果你用-l / full / path /替换/ libhdf5.a,你也可以只为这一个库控制静态链接 从这个SOpost 。 但是,我不知道该怎么做? 我已经进入了构建设置 ,除了选项页面之外什么都没看到,但是在Headers或Linking下没有多少似乎允许我做我想要的。 谁能解释如何正确添加这个静态C库? 仅供参考,项目相对于图书馆所在地的位置如下: 库: /lib/libtxht/libtxht.a Xcode项目: /lib/libtxvm/myProject.xcodeproj

创建静态库

我正在尝试创建一个静态库,以便在我的PHP扩展中使用。 为此,我使用gcc -c file.c -o file.o编译我的.c文件并获取.o文件。 然后我使用ar rcs lib.a *.o将所有编译的对象存档到.a文件中。 执行此操作后,我在编译我的PHP扩展时引用此.a文件,但是我收到以下错误: *** Warning: Linking the shared library .la against the *** static library lib.a is not portable! 如果我使用.o文件而不是.a文件,我得到: *** Warning: Linking the shared library .la against the non-libtool *** objects file1.o file2.o is not portable! 我做错了什么,这样做的正确方法是什么?

Mac OS X的静态库链接问题:找不到架构x86_64的符号

我正在尝试生成一个静态库并将其与执行二进制文件链接。 这是一个库函数: #include int hello() { return 10; } 使用这些命令,我​​可以得到一个静态库。 gcc -c io.c ar -crv libio.a io.o 使用lip -info ,我检查它是x86_64架构。 ar> lipo -info libio.a input file libio.a is not a fat file Non-fat file: libio.a is architecture: x86_64 这是使用库的主要function。 #include extern int hello(); int main(int argc, char *argv[]) { printf(“%d”, hello()); } 但是,当我将对象与静态库链接时,我有错误。 gcc main.c […]

如何将两个windows vc静态库合并为一个

我有一个两个静态库a.lib和b.lib (C语言),它是使用VC6(Visual Studio 6.0)生成的。 我想将这两个lib合并到一个静态lib c.lib 。 如何在CLI模式下执行此操作? 我已经看到了* nix静态库的合并 。 我想在CLI模式下使用VC6静态库做同样的事情。