En dat denk ik ook. .exe kan niets op linux. Van .dll weet ik het niet.
Een dynamic link library (extensie dll) is een externe "bibliotheek' met een zekere functionaliteit. Dat betekent dat een programma een ddl kan aanroepen op het moment dat dat programma dat nodig heeft. Zo kan bijvoorbeeld programma A de gebruiker aanbieden een tekst te printen. De printfunctionaliteit is ondergebracht in een module die bv. print.ddl heet. Voordeel van deze aanpak is dat een programmeur zijn/haar programma kan schrijven en extra functionaliteit kan aanbieden via externe biblioteken zoals print.dll (die ook door anderen geschreven/gemaakt kunnen zijn). Het idee is dat niet elke programmeur telkens hetzelfde wiel moet uitvinden, maar op het bestaande werk van een ander kan teruggrijpen.
EDIT. Een ander idee achter deze aanpak is dat je programma's kunt draaien die niet meteen alle beschikbare functionaliteit in het werkgeheugen laden. Maar dat doen op het moment dat de gebruiker daar om vraagt -- afdrukken bijvoorbeeld. Kortom: slankere, rankere en daardoor meer reactieve software, zeg maar.
In Linux heten externe bibliotheken bv. print.so, de extensie verwijst naar "shared objects", zelfde verhaal als boven.
Natuurlijk zou een *.so kwaad kunnen op een Linux-systeem, maar om echt kwaad te kunnen doen, heeft die *.so een beheerderswachtwoord nodig, die de gebruiker zou moeten geven.
Ik ben geen Windows-expert maar als ik het me goed herinner, kun je in Windows dll's maken die vervelende dingen kunnen uithalen *zonder* dat gebruikers daar beheerderswachtwoorden voor hoeven in te typen.