Skip to main content
2 of 2
Added location of the AVR libc libraries.
Nick Gammon
  • 38.9k
  • 13
  • 70
  • 126

There are multiple places where you can look. As at IDE 1.6.4 (Ubuntu version) some are in:

(install location)/libraries

But these are the high-level libraries, in particular:

Bridge
Esplora
Ethernet
Firmata
GSM
LiquidCrystal
Robot_Control
RobotIRremote
Robot_Motor
SD
Servo
SpacebrewYun
Stepper
Temboo
TFT
WiFi

That does not cover the low-level libraries like Tone, Print, main, etc. These are in:

(install location)/hardware/arduino/avr/cores/arduino

There you would find the Arduino core libraries like:

abi.cpp
Arduino.h
binary.h
CDC.cpp
Client.h
HardwareSerial0.cpp
HardwareSerial1.cpp
HardwareSerial2.cpp
HardwareSerial3.cpp
HardwareSerial.cpp
HardwareSerial.h
HardwareSerial_private.h
HID.cpp
hooks.c
IPAddress.cpp
IPAddress.h
main.cpp
new.cpp
new.h
Printable.h
Print.cpp
Print.h
Server.h
Stream.cpp
Stream.h
Tone.cpp
Udp.h
USBAPI.h
USBCore.cpp
USBCore.h
USBDesc.h
WCharacter.h
WInterrupts.c
wiring_analog.c
wiring.c
wiring_digital.c
wiring_private.h
wiring_pulse.c
wiring_shift.c
WMath.cpp
WString.cpp
WString.h

However even that does not locate things like strcpy. The header files for them can be found at:

(install location)/hardware/tools/avr/avr/include/

There you will find:

alloca.h
assert.h
ctype.h
errno.h
inttypes.h
math.h
setjmp.h
stdfix-avrlibc.h
stdint.h
stdio.h
stdlib.h
string.h

Even that is not the full story. In a subdirectory (avr) you will find the avr-related things, with files for different processors, such as (in part):

boot.h
builtins.h
common.h
cpufunc.h
crc16.h
delay.h
eeprom.h
fuse.h
interrupt.h
io1200.h
io2313.h
...
iox64d4.h
iox8e5.h
lock.h
parity.h
pgmspace.h
portpins.h
power.h
sfr_defs.h
signal.h
signature.h
sleep.h
version.h
wdt.h
xmega.h

As for the source of strcpy, I don't think it is in the distribution. They include the standard libraries, pre-compiled. For example, if you look in:

(install location)/hardware/tools/avr/avr/lib

You will see various pre-compiled libraries, for example:

libc.a
libm.a
libprintf_flt.a
libprintf_min.a
libscanf_flt.a
libscanf_min.a

To find the source you would need to find where the AVR source of libc is (possibly at http://www.nongnu.org/avr-libc/).


As for the Mac, all this stuff is a few levels down in the "Application Package" which you can view by right-clicking and selecting "Show Package Contents". Look in the Contents/Resources/Java folder.


None of these places are where you should put your own libraries (ones you write or download). They should go into the libraries folder which is a subdirectory of your sketchbook folder. Create the libraries folder if it does not exist. That way user-installed libraries persist from one version of the IDE to the next.

Nick Gammon
  • 38.9k
  • 13
  • 70
  • 126