Linux中 编写两个函数,其中一个求数组中的最大值与最小值,另一函数求某一个数的个数, 建立一个库,对程序进行调试;
时间: 2024-03-25 22:39:29 浏览: 176
好的,根据您的要求,我可以给您提供两个函数的样例代码,并且说明如何在 Linux 中建立库并进行调试:
1. 求数组中的最大值与最小值
```c
#include <limits.h>
void find_max_min(int nums[], int size, int* max_val, int* min_val) {
*max_val = INT_MIN;
*min_val = INT_MAX;
for (int i = 0; i < size; i++) {
if (nums[i] > *max_val) {
*max_val = nums[i];
}
if (nums[i] < *min_val) {
*min_val = nums[i];
}
}
}
```
2. 求某一个数的个数
```c
int find_num_count(int nums[], int size, int target) {
int count = 0;
for (int i = 0; i < size; i++) {
if (nums[i] == target) {
count++;
}
}
return count;
}
```
这两个函数可以保存在一个名为 `my_lib.c` 的文件中。为了将它们编译成库,可以使用以下命令:
```
gcc -c -Wall -Werror -fpic my_lib.c
gcc -shared -o libmy_lib.so my_lib.o
```
第一条命令将 `my_lib.c` 编译成 `my_lib.o` 目标文件,第二条命令将目标文件编译成共享库 `libmy_lib.so`。
接下来,您可以在需要使用这两个函数的程序中引入库,例如:
```c
#include <stdio.h>
#include <stdlib.h>
#include "my_lib.h"
int main() {
int nums[] = {1, 2, 3, 4, 5};
int size = sizeof(nums) / sizeof(nums[0]);
int max_val, min_val;
find_max_min(nums, size, &max_val, &min_val);
printf("max_val = %d, min_val = %d\n", max_val, min_val);
int target = 3;
int count = find_num_count(nums, size, target);
printf("%d appears %d times.\n", target, count);
return 0;
}
```
最后,您可以使用 gdb 等调试工具来调试程序。例如,使用以下命令编译程序:
```
gcc -Wall -Werror -L. -lmy_lib main.c -o main
```
其中 `-L.` 指定库文件所在的路径为当前目录,`-lmy_lib` 指定链接库文件 `libmy_lib.so`,`main.c` 是您的程序代码文件。然后可以使用以下命令启动 gdb 调试器:
```
gdb ./main
```
接下来可以使用 gdb 的各种命令进行调试。
阅读全文