<分区>
共享对象 (.so) 文件的实际用例是什么?
据我了解,它用于链接其他高级语言,如 JAVA (JNI) 等。它还用于为各种操作系统风格/处理器架构创建库文件。
如何使用这个功能?
例如,如果我想创建一个通用的可执行文件并且需要在所有版本的 Linux 操作系统中工作,是否可以使用共享对象文件?它是如何完成的?
<分区>
共享对象 (.so) 文件的实际用例是什么?
据我了解,它用于链接其他高级语言,如 JAVA (JNI) 等。它还用于为各种操作系统风格/处理器架构创建库文件。
如何使用这个功能?
例如,如果我想创建一个通用的可执行文件并且需要在所有版本的 Linux 操作系统中工作,是否可以使用共享对象文件?它是如何完成的?
最佳答案
要使用共享对象,首先您需要创建一个共享库。也称为动态库。
共享库用于动态运行时链接。这意味着在程序运行时,这些共享库被加载到 RAM 中。
创建动态库或共享库的命令-
cc -shared -o libany_name.so file1.o file2.o file3.o
其中 any_name
name 表示您可以为库指定任何名称。对于ex-libadd.so
您可以通过以下方式使用共享库执行您的程序-
cc filename.c libany_name.so
当你创建一个可执行文件时-
cc filename.c
或
cc filename.c libany_name.so
它将创建一个动态可执行文件。这些动态可执行文件在运行时需要一些依赖文件。这些依赖文件由编译器自动加载。
要避免这种情况,请使用静态库或静态可执行文件。静态可执行文件本身包含所有功能。可执行文件的大小会更大。
创建静态库的命令-
ar rcs libany_name.a file1.o file2.o file3.o
创建静态可执行文件的命令-
cc -static filename.c
关于c - 共享对象的实际用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236964/