C Static Library: libMathUtils.
a
Step 1: math_utils.c
#include "math_utils.h"
void MathUtils_Add(int a, int b, int *result) {
*result = a + b;
}
void MathUtils_Subtract(int a, int b, int *result) {
*result = a - b;
}
void MathUtils_Multiply(int a, int b, int *result) {
*result = a * b;
}
void MathUtils_Divide(int a, int b, float *result) {
*result = (float)a / b;
}
int MathUtils_Factorial(int n) {
if (n == 0 || n == 1) return 1;
return n * MathUtils_Factorial(n - 1);
}
Step 2: math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
void MathUtils_Add(int a, int b, int *result);
void MathUtils_Subtract(int a, int b, int *result);
void MathUtils_Multiply(int a, int b, int *result);
void MathUtils_Divide(int a, int b, float *result);
int MathUtils_Factorial(int n);
#endif
Step 3: Compile the Static Library
gcc -c math_utils.c -o math_utils.o
ar rcs libMathUtils.a math_utils.o
Step 4: main.c
#include <stdio.h>
#include "math_utils.h"
int main() {
int result;
float div_result;
MathUtils_Add(5, 3, &result);
printf("Add: %d\n", result);
MathUtils_Subtract(10, 4, &result);
printf("Subtract: %d\n", result);
MathUtils_Multiply(6, 7, &result);
printf("Multiply: %d\n", result);
MathUtils_Divide(20, 4, &div_result);
printf("Divide: %.2f\n", div_result);
int fact = MathUtils_Factorial(5);
printf("Factorial: %d\n", fact);
return 0;
}
Step 5: Compile and Link
gcc main.c -L. -lMathUtils -o main
Step 6: Run the Program
./main
Expected Output
Add: 8
Subtract: 6
Multiply: 42
Divide: 5.00
Factorial: 120
Conclusion
This lab provides hands-on experience with creating a C library in
Linux,
which is important for modular and reusable software development.