So I am trying to understand systemcalls with the following Hello World! program:#include <stdio.h>int main(){   printf(Hello World!\n);   return 0;}and then I run strace on the executable and I get the following:execve(./hello, [./hello], [/* 62 vars */]) = 0brk(0)                                  = 0x85a5000mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb774f000access(/etc/ld.so.preload, R_OK)      = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/tls/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/tls/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls/i686, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/tls/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/tls/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/i686, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls/i686, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls, 0xbf8df160)      = -1 ENOENT (No such file or directory)open(/usr/lib/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/i686, 0xbf8df160)     = -1 ENOENT (No such file or directory)open(/usr/lib/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/sse2, 0xbf8df160)     = -1 ENOENT (No such file or directory)open(/usr/lib/libc.so.6, O_RDONLY|O_CLOEXEC) = 3read(3, \177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\177\1\0004\0\0\0..., 512) = 512fstat64(3, {st_mode=S_IFREG|0755, st_size=2035943, ...}) = 0mmap2(NULL, 1801892, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7573000mmap2(0xb7724000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b0000) = 0xb7724000mmap2(0xb7729000, 7844, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7729000close(3)                                = 0mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7572000set_thread_area({entry_number:-1, base_addr:0xb7572700, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 (entry_number:6)mprotect(0xb7724000, 12288, PROT_READ)  = 0mprotect(0xb7750000, 4096, PROT_READ)   = 0fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7571000write(1, Hello World!\n, 13)          = 13exit_group(0)                           = ?+++ exited with 0 +++There are a lot of system calls trying to open some libraries that aren't in the disk. Why is this program trying to access those files? How can I prevent that for happening?The contents of the variable LD_LIBRARY_PATH are:/home/miguel/GNUstep/Library/Libraries:/usr/lib
Strace Hello World program
system calls;strace
This is all perfectly normal. You aren't supposed to prevent the failing library lookups from happening.execve(./hello, [./hello], [/* 62 vars */]) = 0This is your program starting. Since it is dynamically linked, the first code to execute is from the dynamic loader.brk(0)                                  = 0x85a5000mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb774f000The dynamic loader is allocating some heap space.access(/etc/ld.so.preload, R_OK)      = -1 ENOENT (No such file or directory)The dynamic loader checks whether there are dynamic libraries to preload. There aren't any.open(/home/miguel/GNUstep/Library/Libraries/tls/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/tls/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls/i686, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/tls/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/tls/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/tls, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/i686, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/home/miguel/GNUstep/Library/Libraries/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/home/miguel/GNUstep/Library/Libraries, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls/i686, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/tls/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/tls, 0xbf8df160)      = -1 ENOENT (No such file or directory)open(/usr/lib/i686/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/i686/sse2, 0xbf8df160) = -1 ENOENT (No such file or directory)open(/usr/lib/i686/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/i686, 0xbf8df160)     = -1 ENOENT (No such file or directory)open(/usr/lib/sse2/libc.so.6, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)stat64(/usr/lib/sse2, 0xbf8df160)     = -1 ENOENT (No such file or directory)open(/usr/lib/libc.so.6, O_RDONLY|O_CLOEXEC) = 3The dynamic loader is looking for libc6, which is the standard library. It looks in several directories: first in the directories specified in the LD_LIBRARY_PATH, then in the directories listed in /etc/ld.so.conf. (See the manual for the full story.). In each directory, the loader checks several subdirectories first: it determines which hardware features are present (P6 instructions, SSE2), and looks for a version of the library binary which may use these extra features to run more efficiently; when it fails to find one that may use all the features, it looks for a more generic one. In the end, the library is found in a standard system directory, in a non-specialized version.read(3, \177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\177\1\0004\0\0\0..., 512) = 512fstat64(3, {st_mode=S_IFREG|0755, st_size=2035943, ...}) = 0mmap2(NULL, 1801892, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7573000mmap2(0xb7724000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b0000) = 0xb7724000mmap2(0xb7729000, 7844, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7729000close(3)                                = 0mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7572000set_thread_area({entry_number:-1, base_addr:0xb7572700, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 (entry_number:6)mprotect(0xb7724000, 12288, PROT_READ)  = 0mprotect(0xb7750000, 4096, PROT_READ)   = 0The standard library is loaded, then its initialization code runs.fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7571000This is the result of executing the printf call.write(1, Hello World!\n, 13)          = 13exit_group(0)                           = ?This is your program exiting, which includes flushing the stdout buffer.