Skip to main content

Building Open Source Software and the GNU Standard C Library (Lab 4 Part 2)

To download and build the glibc was quite simple thanks to the guide provided by Chris here. The main steps (provided by the article) are:

1) mkdir $HOME/src
2) cd $HOME/src
3) git clone git://sourceware.org/git/glibc.git
4) mkdir -p $HOME/build/glibc
5) cd $HOME/build/glibc
6) $HOME/src/glibc/configure --prefix=/usr
7) make

 This builds a fully functional glibc in the build directory which can be rebuilt anytime using the src directory. The c files present in the src directory must be altered to change the object files in the build directory. I made a small print program here that simply outputs a test message. When compiled with the installed system glibc it prints "hello world!" once. When compiled with my build of glibc it prints it twice due to the changes I made to the print.c file in the src directory. It is important to note that everytime the src directory is altrered in any way the build directory must be remade, and commenting out the proper code to test your code is VERY IMPORTANT. I had to rm -rf my directories a few times because I deleted important code to introduce a bug.

Override mechanisms: judging by the example here it appears to mean overwrtiting the previous application defintions with those that the system supports.

Multiarch mechanisms: "the capability of a system to install and run applications of multiple different binary targets on the same system."(Debian) In other words running a non-native application on a platform. Multiarch refers to the support the application has in this scenario.

Source by Debian here

Comments

Popular posts from this blog

Final Project Part 02 - Sha1 Function Enhancements

To try to squeeze out a bit more performance I attempted to some compiler optimizations. Unfortunately, due to the sheer complexity of the algorithm, I was unable to find other logic complexities to simplify. I tried some loop unrolling to make the compiler have to work a little less, some examples are here below: I made a graph to demonstrate the minute differences this makes in the test vectors below: At most a few millisecond difference is all that can be acquired, and this is only from the finalcount[] array as the digest array produces errors if not compiled in a loop along with other for loops in the code. To test this I simply altered the sha1.c code and ran the make file to see if the vectors passed or failed. As mentioned this is a compiler optimzation, in other words it is completed already, especially at the -O3 level where the benchmarking was done. I would not  recommend this change to be pushed upstream normally due to the insignificant time ch...

Final Project Part 01 - Final Summary

To end part 1 I will summarize what information I have gathered for part 2: I am optimizing clib, a package manager. After benchmarking, it is clear there is a significant time delay in some advanced calls of the SHA1 function, such as ones that call update many times. To optimize, I am going to add the -O3 flag and remove a loop condition (currently). Some other observations: This project is relatively small with no ./configure for other platforms. The Sha1 code is unique and does not conform to the simple sha1 algorithm such as on    Wikipedia . The documentation (i.e. README) is relatively vague at describing the dependancies. It suggests only syntax that implies installation and isn't clear at documenting development vs. published code.   I have learned alot getting to this point in part 1. Firstly, I learned that library files can only be linked by using sudo ldconfig and the files must be in usr/lib. Secondly, I learned how to alter an advance...

Loops in Assembly Architectures (Lab 3)

The modern C and C++ languages are often taken for granted for their simple syntax and compiler intuition. In Assembly, every variable and value are stored in registers, simple output lines are multiple statements in length, and a number can only be 0 to 9. Below I examine two different architectures, X86_64 and aarch64: x86_64 The loop I have created that outputs Loop: number thirty times can be found here . Writing this was extremely difficult, constantly fighting a lack of good documentation and examples online. To write this code I viewed many examples online, wrote pseudo code, and wrote the program in C++ before beginning. Debugging was difficult as the errors given were vague or rididculous at times (no // style commenting comes to mind). The Visual Studio compiler for writing C or C++ for example, is alternatively much more informative and allows for easy: break points, live variable information, and detailed information on error codes. I dislike X86 for the limited amou...