こう,コンパイラが C 言語とかのプログラムをコンパイルするときに,実はコンパイラが「このライブラリのコードは N 番目のアドレス,この実行コードは M 番目のアドレス」みたいに実行したときのメモリ上の配置もえいやって決めちゃうんだけど,Windows の DLL や Linux の .so みたいに,プログラムを実行してる途中に後からメモリに読み込むライブラリだと,静的にアドレスが決め打ちされてると他のアドレスと被ったりするので,メモリに読み込むときに自由なアドレスに貼り付けられるようにメモリアドレス上の位置に依存しない(独立した)コードになるように配慮してコンパイルします。これが位置独立の意味。