Implement a vector in C. See the header file vector.h for details. Implement the code in a file called "vector.c".
Your submission should only include the source code for the vector, vector.c
. Any other file found will directly result in a grade of 0. We will NOT be using your copy of the header file or Makefile.
Compilation of the source code requires no errors or warnings and conformity to the C89 standard. The Makefile syntax is given below.
CC=gcc
CFLAGS=-Wpedantic -Wall -Wextra -Werror -std=c89
vector.o: vector.c vector.h
${CC} ${CFLAGS} vector.c -o vector.o
The above compilation requires a main function. However, your submission should NOT include any main function.
We will test your program using the functions declared in the header file provided as well as some other functions defined by us. The output of the individual test cases will NOT be given in auto-grader and any attempt at retrieving the test cases or the program outputs will be seen as plagiarism.
You are required to implement a vector with the following rules:
Refer to the submission section at the end.
For all tasks assume that vector.h
will be provided in the working directory and your vector.c
will be copied to the current working directory.
Write a shell script named staticlib.sh
that when invoked, produces a static library named libvector.a
from the source files vector.c
and vector.h
.
Then create a static-linked executable staticvector
from libvector.a
and test.c
. Do not execute the program in the shell script.
You have to use the command ar
to create the static library. Then use the command ld
to create the executable file.
Write a shell script named dynamiclib.sh
that when invoked, produces a dynamic-linked library named libvector.so
from vector.c
.
Then generate an executable named dynamicvector
using libvector.so
as well as test.c
. Use ld
for that. Do not execute the program in the shell script.
You should submit a compressed file named as hw2.tar
to autolab.
The directory tree of your submission should look like the following :
├── vector.c
├── dynamiclib.sh
└── staticlib.sh
Note: Autolab grading results:
1-x
stands for grading results for task1. 2-x
stands for grading results for task2. 3-0
stands for grading results for memory leak detection. Note: your submission should NOT contain main()
function
The test environment on autolab is Ubuntu 16.04 with gcc 5.x