so头文件
#ifndef HOMEWORK_H_
#define HOMEWORK_H_
#ifdef __cplusplus
extern "C"
{
#endif
void upper(const char *src, char *desc);
#ifdef __cplusplus
}
#endif
#endif /* HOMEWORK_H_ */
so的cpp文件
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/shm.h>
#include <ctype.h>
void upper(const char *src, char *desc)
{
int i = 0;
for (; i < strlen(src); i++)
{
if (!isalpha(src[i]))
{
desc[i] = src[i];
continue;
}
desc[i] = src[i] & 0xDF;
}
}
so的makefile文件
.SUFFIXES:.c .o
CC=gcc
SRCS=homework1.c
OBJS=$(SRCS:.c=.o)
EXE=libupper.so
start: $(OBJS)
$(CC) -shared -o $(EXE) $(OBJS)
@echo '----------------ok------------'
.c.o:
$(CC) -Wall -g -fPIC -o $@ -c $<
clean:
-rm -f $(OBJS)
-rm -f core*
测试文件
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#include "homework.h"
int main(int arg, char *args[])
{
const char *s = "asdc1232wqedcd";
char buf[100] = {0};
upper(s, buf);
printf("%s\n", buf);
printf("%s\n", s);
return EXIT_SUCCESS;
}
.SUFFIXES:.c .o
CC=gcc
SRCS=main.c
OBJS=$(SRCS:.c=.o)
EXEC=main
start: $(OBJS)
$(CC) -o $(EXEC) $(OBJS) -lupper -L.
@echo '----------------ok------------'
.c.o:
$(CC) -o $@ -c $<
clean:
rm -f $(OBJS)