????1??GCC????????? GNU C Compiler ???????????????????????GCC ?????????????? C ??????????????? Ada ?????C++ ?????Java ?????Objective C ?????Pascal ?????COBOL??????????????????????????? Mercury ??????????? GCC ????????? GNU C ????????????????????????? GNU Compiler Collection ????? GNU ???????????????????????棬??? GCC ??????????????????????????????????仰???????????
????2. ??????
??????????????£?
????//test.c
????#include
????int main(void)
????{
????printf("Hello World! ");
????return 0;
????}
????????????????λ??????????:
????gcc test.c -o test
??????????????????????????????ν??е?????????(????????Preprocessing)??????(Compilation)????? (Assembly)??????(Linking)??
????2.1 ?????
????gcc -E test.c -o test.i ?? gcc -E test.c
???????????test.i????д????test.c????????????????test.i??????????????????????????????????????????д??????????????????
????gcc??-E??????????????????????????????????????????????У???????????stdio.h ????е????????test.c?????
????2.2 ???????????(Compilation)
???????????????????????test.i????????????????
????gcc -S test.i -o test.s
????gcc??-S?????????????????????????????????-o??????????????
????2.3 ???(Assembly)
???????????С?????????????????test.s??gas??????????????????????????£?
????gcc -c test.s -o test.o
????2.4 ????(Linking)
????gcc????????gas??????????????????????????????и??????????????????????????????????????????????????????????????????
???????????С?????????test.o?????????????????????????????????????test
????gcc test.o -o test
???????????д????У????./test?? ?????HelloWorld???
????3. ???????????????
?????????????????????????????????????γ???????????????GCC????????????Щ??????????????????test1.c?? test2.c?????????????????????????б??????????????г???test?????????????????????
????gcc test1.c test2.c -o test
?????????????????????????GCC?????????????????????????????ν??С??????????????????????????????????????????????????
????gcc -c test1.c -o test1.o
????gcc -c test2.c -o test2.o
????gcc test1.o test2.o -o test
????4. ???
????gcc -pedantic illcode.c -o illcode
????-pedantic????????????????????????ANSI/ISO C??????????????????????????????Linux???????????????????????????仰???-pedantic????????????????????Щ?????? ANSI/ISO C???????????????????????????ANSI/ISO C?????????????б???????????Щ????????п????GCC???????????檔
????????-pedantic???GCC?????Щ??????????????????????????????????Щ???????-W??????????м???????-Wall????????????GCC????????????????????
????gcc -Wall illcode.c -o illcode
????GCC????????????????????????????????????????????????????????????????????Linux???????t?????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????-Werror??????GCC?? ?????в????????????????????????????????????????????£?
????gcc -Werror test.c -o test
????5. ?????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????Щ??????.h??????????so????lib??dll?????????????Linux?μ??????????????????????/usr/include/? ??£????????????/usr/lib/???£?Windows?????????????????Visual Stido?????μ?include??lib???????????????????е?????????????????Щ???£?????GCC???????????????????????? ???????????????????
????????????????test.c????linux?????c????mysql????????????????mysql????????MySQL Connectors??C?????????????????????include????У????????mysql connectors???????????????lib????У??????????????so???libmysqlclient.so
????????inclulde????е?·???? /usr/dev/mysql/include ??lib??????? /usr/dev/mysql/lib
????5.1 ????????????
????????????????б???test.c?????????????????????
????gcc –c –I /usr/dev/mysql/include test.c –o test.o
????5.2 ????
?????????????????????????????????:
????gcc –L /usr/dev/mysql/lib –lmysqlclient test.o –o test
????Linux?μ??????????????????????????????.so??β????????????????.a??β??????????????????????????????????????????????????????????????????????
????5.3 ??????????t???????
???????????£? GCC???????????????????????е?????????????????????t??????????????????????????????-static????????t???????
??????/usr/dev/mysql/lib??????????????????????libmysqlclient.so??libmysqlclient.a???????GCC???????????????????????????????????:
????gcc –L /usr/dev/mysql/lib –static –lmysqlclient test.o –o test
??????????????????·?????
????1. ld?????GCC?????е????-L
????2. ????gcc?????????LIBRARY_PATH
????3. ????????? /lib /usr/lib /usr/local/lib ???????compile gcc?д????????
??????????????????????·?????:
????1. ????????????????????????·??
????2. ????????LD_LIBRARY_PATH?????????????·??
????3. ???????/etc/ld.so.conf???????????????·??
????4. ????????????·??/lib
????5. ????????????·??/usr/lib
?????й??????????
????LIBRARY_PATH??????????????????????????????·??
????LD_LIBRARY_PATH??????????????????????????????·??