英文:
Building a static library in C using the ar cmd
问题
I am new to C programming and trying to learn how to build static libraries. I was trying to build an application which suggested me to do the following:
gcc -c testFile.c
ar a testFile.a testFile.o
When I try to execute these cmds, I get an error: "ar: no operation specified"
I am familiar with simple building of a C file, however I don't understand what the second cmd line does and why we need to do this? I understand about .o files, but why do we need to do "ar a"? Is there a simpler way to do the above and avoid the error? Thank you
英文:
I am new to C programming and trying to learn how to build static libraries. I was trying to build an application which suggested me to do the following:
gcc -c testFile.c
ar a testFile.a testFile.o
When I try to execute these cmds, I get an error: "ar: no operation specified"
I am familiar with simple building of a C file, however I don't understand what the second cmd line does and why we need to do this? I understand about .o files, but why do we need to do "ar a"? Is there a simpler way to do the above and avoid the error?Thank you
答案1
得分: 2
根据[Man7]: AR(1)(https://man7.org/linux/man-pages/man1/ar.1.html)(man ar
):
r 插入文件 member... 到 archive(带有replacement)中。
对于自定义操作,您可以使用其修饰符(也列在上述URL中)。
示例:
(py_pc064_03.10_test2_pycoralcf) [cfati@cfati-5510-0:/mnt/e/Work/Dev/StackExchange/StackOverflow/q076052480]> ~/sopr.sh
### 将提示设置为较短,以更好地适应粘贴到StackOverflow(或其他)页面中 ###
[064bit提示]> ls
[064bit提示]> # 创建一个目标文件
[064bit提示]> echo "void f() {}" | gcc -x c -c -o dummy.o -
[064bit提示]> ls
dummy.o
[064bit提示]> # 创建(更新)一个存档文件
[064bit提示]> ar rs libdummy.a dummy.o
ar: 创建 libdummy.a
[064bit提示]> ls -Al
总计 8
-rw-r--r-- 1 cfati cfati 1352 Apr 19 12:08 dummy.o
-rw-r--r-- 1 cfati cfati 1490 Apr 19 12:10 libdummy.a
[064bit提示]> # 列出存档成员
[064bit提示]> ar tv libdummy.a
rw-r--r-- 0/0 1352 Jan 1 02:00 1970 dummy.o
英文:
According to [Man7]: AR(1) (man ar
):
> r Insert the files member... into archive (with replacement).
For customizations, you could make use of its modifiers (also listed in the above URL).
Example:
> lang-bash
> (py_pc064_03.10_test2_pycoralcf) [cfati@cfati-5510-0:/mnt/e/Work/Dev/StackExchange/StackOverflow/q076052480]> ~/sopr.sh
> ### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###
>
> [064bit prompt]> ls
> [064bit prompt]> # Create an object file
> [064bit prompt]> echo "void f() {}" | gcc -x c -c -o dummy.o -
> [064bit prompt]> ls
> dummy.o
> [064bit prompt]> # Create (update) an archive out of it
> [064bit prompt]> ar rs libdummy.a dummy.o
> ar: creating libdummy.a
> [064bit prompt]> ls -Al
> total 8
> -rw-r--r-- 1 cfati cfati 1352 Apr 19 12:08 dummy.o
> -rw-r--r-- 1 cfati cfati 1490 Apr 19 12:10 libdummy.a
> [064bit prompt]> # List archive members
> [064bit prompt]> ar tv libdummy.a
> rw-r--r-- 0/0 1352 Jan 1 02:00 1970 dummy.o
>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论