• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. An Introduction to Linux Development Environment S.M.H. Hamidi hamidi{ at }ce{ dot }sharif{ dot }edu Hamedan Linux Seminar, Fall 2004
  • 2. Outline
    • Introduction
    • Linux & Programming relationship
    • Applications and benefits
    • Embedded systems
    • Components of Linux development platform
    • Resources
    • Conclusion
  • 3. Introduction
    • Linux & Programming have inherit relationship.
    • Linux is an open “ source code” software .
    • Linux made by programmers, having in mind other programmers.
    • Best of the kind programming tools come free with Linux.
  • 4. How does it affect programmers’ life?
    • Make an unrefined idea to a big Open Source project.
    • Share your idea and code fragments.
    • Gather a team of volunteers from all over the word.
    • Get donations for your basic idea and team leadership.
  • 5. How does it affect programmers’ life? ( cont’d )
    • Take advantage of free testers, debuggers, documenters and developers.
    • Some users may see your work and become real customers:
      • Some may need support and training.
      • Sign a financial contract with those who need a customized version of your system.
  • 6. How does it affect programmers’ life? ( vice versa )
    • You are forced by your employer to do a huge project with an early deadline.
    • You search the web for similar previously done work.
    • You likely find a close work and make some changes and will be able to meet the deadline.
  • 7. How does it affect programmers’ life? ( cont’d )
    • You gain benefit of other efforts as others of yours: Cooperation
    • Learn from elegant codes of professionals.
    • Improve your coding and team working skills by joining big Open Source projects.
  • 8. Applications & benefits
    • Open Source returns freedom and authority to the customer.
    • Change software according to your desire.
    • Integrate existing software systems to a new one. (System Integration)
    • Add new features to your software. (e.g. Persian support)
  • 9. Applications & benefits ( cont’d )
    • Building applications from source has some advantages in comparison with binary distributions:
      • Performance tuning (e.g. compiling & customizing Linux kernel)
      • Hardware fitting
      • Minimizing size and features can lead to more security and better performance.
  • 10. Applications & benefits ( cont’d )
    • Some applications are normally distributed as source and should be build/ported on host machine.
    • Solve software bugs yourself instead of bug report and waiting to be fixed in later releases.
    • Write device driver for your specialized hardware embedded systems
  • 11. What are embedded systems?
    • A combination of computer hardware and software dedicated to specific tasks.
    • In contrast with general-purpose software/hardware
    • Limited hardware capabilities: generally lack of memory space, power supply and fast processors
    • Customized, minimized and crash-protected Operating System and applications are needed.
  • 12. Embedded systems market
    • Fast growing market and applications:
      • Mobile phones
      • Home and office appliances
      • Network devices (routers, firewalls, wireless access points)
      • PDA’s (Personal Digital Assistants) and Pocket PC’s
      • WebTV
      • Thin clients
      • Game devices (e.g. Xbox)
      • Robots
      • Real time applications
  • 13. Embedded systems and Linux
    • Linux as an operating system can act greatly as heart of Embedded system software.
    • Access to code make it easy to customize and minimize the Linux kernel so that it can be put on a ROM.
    • It can be changed to fit specific hardware. (e.g. through writing device drivers)
  • 14. Embedded systems and Linux ( cont’d )
    • Windows CE: not a great competitor
    • Linux architecture makes it a suitable choice:
      • Access to source code
      • Easy customization
      • Low memory consumption
      • No built-in GUI
      • Built-in firewall and router
      • Many freely availabe embedded applications
  • 15. And then?
    • Roll up your sleeves and get into Linux coding.
    • Write your course projects in the Linux environment:
    • Better understanding of different level of build process.
    • Its difficulty is once! (Learning time)
  • 16. Ready to start a quick tour?
  • 17. Components of a Development Platform
    • Editor
    • Compiler
    • Linker and loader
    • Project manager
    • Debugger
    • Version control and team collaboration
    • Documentation system
  • 18. Editor
      • Feature rich editors increase developer productivity:
        • Syntax Highlighting
        • Opening multiple windows
        • Rapid typing and code navigation
        • Support of tags
        • Folding code
        • Auto complete and easy coding
        • Extensibility and customizing
        • Code beautifying
  • 19. Editor ( cont’d )
    • Vim and Emacs are two professional editors with many features and extensions.
    • Support for many languages and file formats
  • 20. Vim (folding and highlighting)
  • 21. Vim (multiple windows)
  • 22. Compiler
    • gcc , best standard and fast C/C++ compiler in the world, claimed by many professionals
    • gcc was developed by Richard Stallman, founder of Free Software Foundation.
    • gcc is ported on many platforms more than any compiler.
    • ld , is default Linux linker but gcc can be used also.
  • 23. Project Management with make
    • Make is a well-designed utility for code project management and build automation.
    • Idea behind Make has become as a essential part of every development environment, including MS Visual Studio
    • autoconf and automake provide a nice way for porting softwares.
  • 24. Debugger
    • gdb and gdbserver
  • 25. Version Control System
    • CVS (Concurrent Version System) one of the first and best version control systems on the world.
    • CVS is widely used all over the world. Mostly all open source projects make use of CVS .
    • It has some features for team collaboration. Mailing lists are also a necessary part of every open source projects.
  • 26. Documentation System
    • Docbook
    • And many others that are not listed on this slide because lack of time!
  • 27. Integrated Development Environment
    • RHIDE
    • motor
    • Kdevelop
    • Eclips
    • Anjuta
    • Magic C++
  • 28. anjuta
  • 29. Eclipse
  • 30. Online Resources
    • YoLinux programming tutorials
    • Advanced Linux Programming
    • Linux Devices
    • Linux kernel sources
    • The Linux Development Platform
    • Linoleum Linux Programming Resources
    • RedHat Developer Courses
    • This Presentation : http://ce.sharif.edu/~hamidi/LP-intro.ppt
  • 31. Q & A Any question?