linux环境下库文件的编译

一:无库情况下

#include 
void hello()

        printf("This is st .\n");
}

二:生成静态库

 shutao  ~  mkdir libtest
mkdir: cannot create directory ‘libtest’: File exists
 shutao  ~  rm -r libtest
 shutao  ~  mkdir libtest
 shutao  ~  cd libtest/
 shutao  ~  libtest  vim stlib.c
 shutao  ~  libtest  vim stlib.h
 shutao  ~  libtest  vim test.c
 shutao  ~  libtest  gcc -Wall -g -c -o stlib.o stlib.c
stlib.c:1:10: error: #include expects "FILENAME" or <FILENAME>
 #include
          ^
stlib.c: In function ‘hello’:
stlib.c:4:10: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
          printf("This is my st.\n");
          ^~~~~~
stlib.c:4:10: warning: incompatible implicit declaration of built-in function ‘printf’
stlib.c:4:10: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
 shutao  ~  libtest vim stlib.c
 shutao  ~  libtest  gcc -Wall -g -c -o stlib.o stlib.c
 shutao  ~  libtest  ar rcs stlib.a stlib.o
 shutao  ~  libtest  gcc -Wall -g -c test.c -o test.o
 shutao  ~  libtest  ls
stlib.a  stlib.c  stlib.h  stlib.o  test.c  test.o
 shutao  ~  libtest  mv stlib.a libstlib.a
 shutao  ~  libtest  ls
libstlib.a  stlib.c  stlib.h  stlib.o  test.c  test.o
 shutao  ~  libtest   gcc -g -o test test.o -L. -lstlib
 shutao  ~  libtest  ls
libstlib.a  stlib.c  stlib.h  stlib.o  test  test.c  test.o
 shutao  ~  libtest  ./test
This is st.
 到此,静态库完成。

其中  stlib.c为

#include <stdio.h>
void hello()

        printf("This is st.\n");
}

  stlib.h为

extern void hello();

test.c为

#include "stlib.h"
int  main()
{
        hello();
        return 0;
}

三:动态库

具体操作如下

 

 

 其中  so_test.h为

extern void test_st();

test_st.c 为

#include<stdio.h>
#include "so_test.h"
void test_st()
{
                printf("This is in test_st..\n");
}

test.c为

#include "so_test.h"
int main()
{
                test_st();
                  return 0;
}

到此,简易静态、动态库的编写完成。

posted @ 2020-03-21 12:59  stsuper  阅读(810)  评论(0)    收藏  举报