as part of my job sometimes I get chance to interview C programmers, till today, number of C programmers I have interviewed none knows about new(C11 & C99) features of C programming language, some even not heard of these standards that made me to add this page, I strongly believe if we are working on product which is born out of C programming, one needs to know about C99 and C11 features as well as Safe-C libraries which improves software quality and security C99 standard has become absolute by now, considering C11 standard which is part of our products which are written in C programming language. if we name few missing elements in C89 programming features 1) No array bounds checking 2) No variable length arrays 3) No inline functions 4) No support for Boolean data type 5) No complex number type support 6) No single line comment (//) 7) No variable number of arguments in MACRO 8) No support for declaring variables in blocks . and more .. all above elements are
how can you tell whether a program is statically linked? And if it is dynamically linked, how do you know what libraries it needs? The ldd command can answer both questions shiv@ubuntu:~$ ldd /sbin/ldconfig not a dynamic executable (ldconfig is not dynmic loadable) shiv@ubuntu:~$ ldd /bin/ln (ln is dynamic loadable but it needs below listed things to run) linux-gate.so.1 => (0x00918000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00110000) /lib/ld-linux.so.2 (0x0033f000) ldconfig ------------ you use the ldconfig command without parameters to rebuild ld.so.cache ldconfig -p | less to display ld.so.cache how does the dynamic loader know where to look for executables? >>As with many things on Linux, there is a configuration file in /etc. shiv@ubuntu:~$ cat /etc/ld.so.conf include /etc/ld.so.conf.d/*.conf shiv@ubuntu:~$ ls /etc/ld.so.conf.d/*.conf | more /etc/ld.so.conf.d/GL.conf /etc/ld.so.conf.d