Libraries i C. Thomas Bøgholm. Marts En kort introduktion. Aalborg Universitet

Relaterede dokumenter
Principper for Samtidighed og Styresystemer

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

BlogReader Af Jonas F. Jensen.

Installations guide Saxo ERPTrader. Microsoft Dynamics NAV 2009 / 2013 / 2013R2

Tlf Fax

A Profile for Safety Critical Java

Installationsguide. Integration af erhvervsdata fra NN Markedsdata til Microsoft Dynamics NAV 2015

Installationsguide. Integration af erhvervsdata fra NN Markedsdata til Microsoft Dynamics NAV 2013

Brugervejledning Digital Post for administratorer

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Tech College Aalborg. HomePort. Projekt Smart Zenior Home

GRAFISK WORKFLOW REDESIGN AF HJEMMESIDE

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen

SAS Forum 2012 Den virtuelle operatør

VEJLEDNING ITS365. Gratis tilbud til alle kursister på Randers HF & VUC

har jeg hentet nedenstående anmeldelse af et godt program til

Tech College Aalborg. HomePort. Projekt Smart Zenior Home Guide til udvikling af nye adaptere til HomePort

Real-time programming safety in Java and Ada

Kom godt igang med Inventar registrering

Kom godt igang med Inventar registrering

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN

Guide til opdatering af Navision Stat med ny funktionalitet - nye objekter, datakonvertering, automatisk indlæsning af datafiler.

Struktureret Test og Værktøjer Appendiks til bogen Struktureret Test

Pronestor Room & Catering

DM507 Algoritmer og datastrukturer

Tillæg til Libris-hæftet: WordPress. Temaredigering og sikkerhed m.m.

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows Vista

02101 Indledende Programmering Introduktion til Eclipse

Forskellige Java versioner

Guide: Facebook API. Facebook API til dit data-hjerte

GIS Is Advancing Rapidly Integrating and Leveraging Many Innovations

Minikursus i C-programmering

Metoder og værktøjer til programmering

Installation af Certifikat til Direkte Kommunikation Bank Connect

Indhold... 2 Installation af bannermodulet... 3 Opsætning af bannermodul... 5 Opsætning af bannere... 7 Indsætning af bannermodul på side...

Guide til opdatering af Navision Stat med ny funktionalitet - nye objekter, datakonvertering, automatisk indlæsning af datafiler.

Lektion 6. Grundlæggende programmering i VR

Guide til opdatering af Parrot CK3100 LCD, 3200LS Color, 3200LS+ og MK6100 med en Parrot Dongle

GRAFISK WORKFLOW. 1 Grafisk workflow

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows XP/Vista Home

Forelæsning Uge 2 Torsdag

Datatekniker med programmering som speciale H5

For at logge ind i PURE, skal du gå til siden medarbejdere.au.dk/pure. Tryk på det blå loginfelt i højre side.

DAXIF# - Delegate Automated Xrm Installation Framework. Delegate A/S

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med.

SÅDAN BRUGER DU TEKST- BEHANDLING INTRODUKTION

Best practice. Forudsætninger for et godt data warehouse SAS Data Integration Studio

Vejledning til opbygning af hjemmesider

TIA-portalen V13 Engineeringværktøjet, som gør det mere effektivt

OPRETTELSE AF SQL NODE

AktivLog. Log program for EDR s 80m aktivitetstest. Af oz1gdi / 5p0o Steen Rudberg. AktivLog V af 11

Indledning Hvordan virker GRUB? Installation af GRUB Avancerede anvendelser Afslutning. GRUB bootloaderen. Christian Laursen. AaUUG November 2005

Opgradering af firmware på Trimble GNSS modtager

DOKUMENTBROKER Koncept

TeamShare 3.0 Forbedringer til TeamShare Outlook

Nyt system til lokalhjemmesider i Enhedslisten

Web CMS kontra Collaboration

Applikations Virtualisering. Anders Keis Hansen

Introduktion QEMU system emulator QEMU user space emulator Afslutning QEMU. Christian Laursen. Århus Januar 2008

2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING

JTA-DynamicsPDF. til. Microsoft Dynamics C5 vers. 3 SP3 eller højere. JTA-Data Jylland Vinkelvej 108a 8800 Viborg Tlf

Datatekniker med programmering som speciale

Abstrakte datatyper C#-version

Aftenskole i programmering sæson Watch Me. Sæson 2 - Lektion 19

POWERPOINT, ONENOTE OG OUTLOOK

Micro-pixel Neopixel til micro:bit

Forelæsning Uge 2 Torsdag

Brugerkontrolmetoder i ELMS 1.1

Programmeringseksempel til CX/IPC

- de primære funktioner

Eksempel: Skat i år 2000

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

PID2000 Archive Service

Sider og segmenter. dopsys 1

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

3) Først og fremmest kan du vælge hvilket tema din side skal have.

Datatekniker med programmering som speciale

NN Markedsdata. Til. Microsoft Dynamics CRM 2011 Installations guide

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

DM507 Algoritmer og datastrukturer

MANUAL til WP ver Skrevet af Brian Brandt fra

Forelæsning Uge 2 Torsdag

DM507 Algoritmer og datastrukturer

Dette dokument beskriver den nye grænseflade med udgangspunkt i den nye MS Dynamics NAV 5.0 SP1 klient.

Valg af automationsplatform

Deling i Windows. Netteknik 1

In stal l ati on sv ejl edn i n g er ti l di gi tal e n o- tesbøger

Design Systemkald. User-mode Linux, The Linux kernel/

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Indhold

BRUGERVEJLEDNING FOR ELBAPRINT SERVICE

Brug af Office365 med Onedrive, nyeste Officepakke mv

Sider og segmenter. dopsys 1

Integration mellem OpenBizBox og E conomic

Sønderborg Kommunes Lokalhistoriske Arkivsamarbejde SKLA

Programmering og Problemløsning, 2017

Fase Forklaring Navigation. Opret en div til feltet hvorpå scrollbaren ønskes placeret. Giv div'en mål og position absolut. Vælg Overflow: auto.

SÅDAN BRUGER DU REGNEARK INTRODUKTION

Aftenskole i programmering sæson Registrering af tid. Sæson 2 - Lektion 5

Diagnostic og Toolbox Instruktion. Lindgaard Pedersen A/S. Rev. 1.0 Side 1 / 14

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold:

Transkript:

Libraries i C En kort introduktion Thomas Bøgholm Aalborg Universitet Marts 2010

Outline Motivation Hvad er et library Brugen af libraries Eksempler - med live kode Dit eget library Opgaver 2/18

Motivation Modul lignende software udvikling Programmering idag er ca. kun brug af libraries og APIer det er sjældent man har brug for at lave noget fra bunden Ofte er folk usikre på hvordan libraries bruges Miniprojekt handler om kernemoduler... Modning af C kundskaber Det minder om kernel modules (er ca. det omvendte) 3/18

Ikke rocket-science Det handler om at læse dokumentation eller klare sig med hvad man kan finde Det handler om at kunne læse/skrive C ved mangel af dokumentation det ser ofte farligt ud med pointere, datastrukturer osv. 4/18

Libraries Et library består af: headers.h - indeholdende diverse erklæringer objektfil.a /.so - selve koden Til brug i egne programmer Static libraries Shared libraries Det handler om at finde/bruge (alternativer til?) dokumentation Man skal ikke være bange for at åbne header filer Ofte er andres kode interessant: code.google.com, apt-get source, etc 5/18

Static libraries Kendt på compiletime Kopieres ind i executables man kan evt. nøjes med den brugte delmængde ikke delt mindre flexibilitet 6/18

Shared libraries Brugt på runtime Kan skiftes ud og opdateres Delt mellem flere processer Højere flexibilitet 7/18

Eksempler på libraries math pthreads bluetooth/bluez opengl etc etc 8/18

Statisk linking libxx.a gcc -static source.c -o target -lxx Dynamisk linking libyy.so gcc source.c -o target -lyy Manuel loading af libraries dlfcn.h - interface til dynamic linking loader dlopen() dlsym() dlclose() dlerror() 9/18

Tråde i C pthreads pthreads er et tråd-library Implementeret i libpthread Demo 10/18

Dit eget library Der findes flere måder at lave/bruge moduler på Statiske libraries Dynamiske libraries med automatisk loading med manuel loading 11/18

Static library prefix: lib suffix:.a (archive) Samling ikke-linkede objekt-filer gcc bruges som normalt (-c) ar bruges til at samle et antal.o filer den resulterende.a fil installeres normal kompilering med gcc -l option Eksempel 12/18

Shared library prefix: lib suffix:.so (shared object) En samling position independent objekt-filer gcc skal nu generere position independent code (-fpic) et antal.o filer samles med gcc og en masse options gcc skal lave et shared object: -shared linkeren navngiver med soname: -Wl,-soname,libAwesome.so.0 den resulterende.so fil installeres normal kompilering med gcc -l option Eksempel 13/18

Manuel loading af libraries Normalt vil et shared library loades automatisk Manglende library? Løsning: manuel loading Brug af libraries foregår da via funktionspointere dlfcn.h - interface til dynamic linking loader dlopen() dlsym() dlclose() dlerror() kompilering med -ldl Eksempel 14/18

C programmering: Gør det til en vane at: Læse dokumentation Læse kode frygt aldrig at åbne koden! Med lidt tålmodighed er det: Sjovt at kode C og ikke svært Det er let at bruge libraries og endda at lave libraries 15/18

Links http://www.dwheeler.com/program-library/ http://www.yolinux.com/tutorials/ LibraryArchives-StaticAndDynamic.html http://www.cs.aau.dk/~boegholm/libslides.pdf manpages-dev apt-get source PAKKE /usr/include 16/18

Målet med disse opgaver At kaste jer ud på dybt vand I får brug for at læse dokumentation I får brug for at prøve jer frem Ved kerneudvikling (og generelt?) vil I bruge mest tid på at læse dokumentation Derfor er opgaverne ret åbne 17/18

Brug libraries! 1 Lav racekondition eksempel med pthreads Indsæt synkronisering pthread mutex t sem t ( semaphore.h ) 2 Simpelt plugin system Lav et shared library og brug det med funktionerne: dlopen() dlsym() dlclose() 3 Hvis du har et bluetooth device brug libbluetooth Udskriv en liste af de devices der findes bluetooth/hci.h bluetooth/bluetooth.h 18/18