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

Views

Total Views
3,229
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
90
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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?